logo

Java'da Özel ArrayList

Daha fazla ilerlemeden önce kavramı hızla gözden geçirelim. diziler Ve Dizi Listesi hızlıca. Java'da dizilerin, bellek adres alanına sürekli bir şekilde öğe ekleme işlevselliği sağlayan doğrusal veri yapıları olduğunu, ArrayList'in ise Koleksiyon çerçevesine ait bir sınıf olduğunu gördük. İyi bir programcı olmak, bu ikisi arasındaki farkları bilmesine rağmen ArrayList'i diziler üzerinde kullanmanın zaten farkındadır. Artık ArrayList ile bile ilerlemeye devam edersek, ArrayList'te saklanması gereken öğelerin veri türü türünü iletmek için bir işlevsellik gelir; bu, bir nesne dizesi tamsayı çift kayan nokta vb. olabilir. 

Sözdizimi:

Arraylist al = new ArrayList ;

Not: Java'daki ArrayList (C++'daki vektöre eşdeğerdir) dinamik boyuta sahiptir. Boyutuna göre küçültülebilir veya genişletilebilir. ArrayList, koleksiyon çerçevesinin bir parçasıdır ve java.util paketi



Sözdizimi:

Java'da nesne eşitliği
ArrayList  list = new ArrayList <> ();

Burada önemli olan E'nin burada hayal edebileceğiniz bir nesne veri tipini temsil etmesidir Tamsayı Burada. Integer sınıfı ilkel türden bir değeri sarar int bir nesnede. Tamsayı türündeki bir nesne, türü int olan tek bir alan içerir. Kavramının üzerinden geçin sarmalayıcı sınıfları Java'da ilerlemeden önce burada arka uçta hizmet verecek ve eğer iyi biliyorsak anlayışı daha net hale getirecek Otomatik kutulama ve kutudan çıkarma kavramları . Bunun nedeni, listedeki öğeler üzerinde işlemler gerçekleştirirken sözdizimlerinin farklı olacağı ve bu nedenle, özel ArrayList'e öğe ekleme senaryosunu göz önünde bulundurduğunuz ve ikisi arasındaki sözdizimi farklılıklarına dikkat ettiğiniz için kavramı kavramanın tükeneceğidir. 

Sözdizimi:

ArrayList       al    = new Arraylist  () ;  
al.add(1) ;

Sözdizimi:

ArrayList     alobj    = new Arraylist() ;  
alobj(new Integer(1)) ;

Aşağıdaki gibi algılamak için örnek bir çizimi ele alalım:

İllüstrasyon:

Java'da Özel ArrayList

burada genel olarak sıklıkla kullandığımız aynı tipteki tüm unsurlara sahibiz. Şimdi aynı diyagramatik akışı önerelim ArrayList bu görüntüde gösterildiği gibi basitçe birden fazla veriyi destekler. 

Java'da Özel ArrayList


Yukarıdaki ArrayList'te depolanan elemanların farklı türde olduğunu açıkça görebiliriz. Yani şu kavramı ortaya çıkarıyor: kısıtlayıcı. tek bir türe gitmekle kalmaz, yalnızca bu Liste bize ArrayList'imizde ne tür veri türlerinin bulunabileceğine erişebildiğimiz türümüze göre Liste yapma esnekliği sağlar. Bu Listeye Java'da Özel ArrayList adı verilir. . Özel bir ArrayList'in kullanıcı gereksinimlerine dayalı özellikleri vardır ve birden fazla veri türüne sahip olabilir. Bu veriler, çeşitli ilkel nesne veri türlerinin birleşimiyle oluşturulan özel bir iç sınıf tarafından sağlanır.

Uygulama: Girdiyi şu şekilde almamız gereken bir durumu düşünün: N öğrenci sayısı ve detayları şöyle: 

  • rulo numarası
  • isim
  • işaretler
  • telefon numarası

Java'daki özel Arraylist kavramından habersizsek, aşağıda listelenen bireysel ArrayList'leri yapacağımızı varsayalım. 4 ArrayList tanımlayıp her birine uygun şekilde veri kaydediyoruz.

ArrayList   roll = new ArrayList<>(); // roll number
 ArrayList name = new ArrayList<>(); // name
ArrayList   marks = new ArrayList<>(); // marks
ArrayList phone = new ArrayList<>(); // phone number 

Şimdi aşağıda gösterildiği gibi programımızın zaman karmaşıklığını daha büyük ölçüde artırarak öğrenci verilerini getirmek için her birinin üzerinde yineleme yapacağız.

for (int i = 0; i < n; i++)   
{

// Adding all the values to each arraylist
// each arraylist has primitive datatypes

roll.add(rollnum_i);
name.add(name_i);
marks.add(marks_i);
phone.add(phone_i);
}

Şimdi yukarıda öğrendiğimiz kavramın yardımıyla aynısını uygulayarak yapalım. Özel ArrayList'imizi oluşturmak için aşağıda listelenen adımları aşağıdaki gibi gerçekleştirin:

Prosedür: Özel ArrayList'in oluşturulması aşağıdaki gibidir:

referanssızlık işaretçisi
  1. Bir ArrayList Nesnesi oluşturun ve türünü Sınıf Verisi olarak yerleştirin.
  2. Bir sınıf tanımlayın ve gerekli varlıkları yapıcıya yerleştirin.
  3. Bu varlıkları global değişkenlere bağlayın.
  4. ArrayList'ten alınan veriler, birden fazla veriyi depolayan sınıf türündedir.

Örnek

Java
// Java program to illustrate Custom ArrayList // Importing ArrayList class from java.util package import java.util.ArrayList; // Class 1 // Outer class // Main class // CustomArrayList class Data {  // Global variables of the class  int roll;  String name;  int marks;  long phone;  // Constructor has type of data that is required  Data(int roll String name int marks long phone)  {  // Initialize the input variable from main  // function to the global variable of the class  // this keyword refers to current instance  this.roll = roll;  this.name = name;  this.marks = marks;  this.phone = phone;  } } public class GFG {  // Custom class which has data type class has  // defined the type of data ArrayList  // size of input 4  int n = 4;  // Class 2  // Inner class  // The custom datatype class  public void addValues(int roll[] String name[]  int marks[] long phone[])  {  // local custom arraylist of data type  // Data having (int String int long) type  // from the class  ArrayList<Data> list = new ArrayList<>();  for (int i = 0; i < n; i++) {  // create an object and send values to the  // constructor to be saved in the Data class  list.add(new Data(roll[i] name[i] marks[i]  phone[i]));  }  // after adding values printing the values to  // test the custom arraylist  printValues(list);  }  // Method 2  // To print the values  public void printValues(ArrayList<Data> list)  {  // list- the custom arraylist is sent from  // previous function  for (int i = 0; i < n; i++) {  // Data received from arraylist is of Data  // type which is custom (int String int  // long) based on class Data  Data data = list.get(i);  // Print and display custom ArrayList  // elements that holds for student attribute  // Data variable of type Data has four  // primitive datatypes roll -int name-  // String marks- int phone- long  System.out.println(data.roll + ' ' + data.name  + ' ' + data.marks + ' '  + data.phone);  }  }  // Method 1  // Main driver method  public static void main(String args[])  {  // Custom input data  int roll[] = { 1 2 3 4 };  String name[]  = { 'Shubham' 'Atul' 'Ayush' 'Rupesh' };  int marks[] = { 100 99 93 94 };  long phone[] = { 8762357381L 8762357382L  8762357383L 8762357384L };  // Creating an object of the class  GFG custom = new GFG();  // Now calling function to add the values to the  // arraylist  custom.addValues(roll name marks phone);  } } 

Çıkış
1 Shubham 100 8762357381 2 Atul 99 8762357382 3 Ayush 93 8762357383 4 Rupesh 94 8762357384

Java'da özel bir ArrayList, java.util.AbstractList sınıfı genişletilerek ve yöntemleri uygulanarak oluşturulabilir. Özel bir ArrayList'i nasıl oluşturabileceğinize dair bir örnek:

Java
import java.util.AbstractList; import java.util.Arrays; import java.util.List; public class CustomArrayList<E> extends AbstractList<E> {  private int size = 0;  private static final int DEFAULT_CAPACITY = 10;  private Object elements[];  public CustomArrayList() {  elements = new Object[DEFAULT_CAPACITY];  }  public CustomArrayList(int capacity) {  elements = new Object[capacity];  }  @Override  public int size() {  return size;  }  @Override  public E get(int index) {  if (index >= size || index < 0) {  throw new IndexOutOfBoundsException('Index: ' + index + ' Size ' + index);  }  return (E) elements[index];  }  @Override  public void add(int index E element) {  if (index > size || index < 0) {  throw new IndexOutOfBoundsException('Index: ' + index + ' Size ' + index);  }  ensureCapacity();  for (int i = size - 1; i >= index; i--) {  elements[i + 1] = elements[i];  }  elements[index] = element;  size++;  }  @Override  public E remove(int index) {  if (index >= size || index < 0) {  throw new IndexOutOfBoundsException('Index: ' + index + ' Size ' + index);  }  Object item = elements[index];  for (int i = index; i < size - 1; i++) {  elements[i] = elements[i + 1];  }  size--;  return (E) item;  }  private void ensureCapacity() {  int newSize = elements.length * 2;  elements = Arrays.copyOf(elements newSize);  }  public static void main(String[] args) {  List<Integer> list = new CustomArrayList<>();  list.add(1);  list.add(2);  list.add(3);  System.out.println('CustomArrayList: ' + list);  } } 

Çıkış
CustomArrayList: [1 2 3]

Bu örnekte özel ArrayList, AbstractList sınıfının genişletilmesi ve onun boyut ekleme ve kaldırma yöntemlerinin uygulanmasıyla oluşturulur. Özel ArrayList ayrıca, alanı biterse ArrayList'in boyutunu iki katına çıkaran,sureCapacity adında özel bir yönteme sahiptir.

Java'da özel bir ArrayList kullanmanın avantajları:

  1. Esneklik: Özel bir ArrayList oluşturmak, ArrayList'in davranışını uygulamanızın özel ihtiyaçlarını karşılayacak şekilde özelleştirmenize olanak tanır.
  2. Anlamak: Kendi ArrayList'inizi sıfırdan oluşturmak, ArrayList'lerin nasıl çalıştığını ve onları nasıl etkili bir şekilde kullanacağınızı anlamanıza yardımcı olabilir.

Java'da özel bir ArrayList kullanmanın dezavantajları:

  1. Zaman tüketimi: Özel bir ArrayList oluşturmak zaman alabilir ve iyi bir

Test Oluştur