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:
ArrayListal = 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:

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.

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
- Bir ArrayList Nesnesi oluşturun ve türünü Sınıf Verisi olarak yerleştirin.
- Bir sınıf tanımlayın ve gerekli varlıkları yapıcıya yerleştirin.
- Bu varlıkları global değişkenlere bağlayın.
- 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:
Javaimport 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ı:
- 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.
- 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ı:
- Zaman tüketimi: Özel bir ArrayList oluşturmak zaman alabilir ve iyi bir
Test Oluştur