"İşte buradayım."

"Merhaba Ellie!"

"Bugün ilginç bir konudan bahsedeceğiz. Size ArrayList sınıfından bahsedeceğim ."

"Yeni bir sınıf mı? Harika! Ne yapabilir?"

"Arka hikayeden başlayayım. Programcıların dizilerle ilgili sevmediği tek şey, boyutlarını değiştirememenizdir. Yalnızca bir boş yeri olan bir diziye üç öğe daha eklemeniz gerekirse ne yaparsınız? "

"Bu sorunun tek çözümü, tüm öğeler için yeterli alana sahip olduğunuzdan emin olmak için çok büyük diziler oluşturmaktır. Ancak, bu genellikle boşa harcanan hafıza anlamına gelir. Bir dizi genellikle üç öğe içeriyorsa, ancak en küçük bir şans bile vardır. 100 öğe barındırması gerekebileceği için, 100 öğeli bir dizi oluşturmanız gerekir."

"Peki, programcılar ne buldu?"

" Array ile aynı şeyi yapan, ancak boyutunu değiştirebilen ArrayList sınıfını yazdılar ."

"İlginç bir hareket. Bunu nasıl yaptılar?"

"Her ArrayList nesnesi, düzenli bir dizi öğe saklar. Bir ArrayList'ten öğeleri okuduğunuzda , onları kendi iç dizisinden okur. ArrayList'e yazdığınızda , onları kendi iç dizisine yazar. Burada, şu sütunları karşılaştırın:"

Sıralamak Dizi Listesi
Öğeler için bir kapsayıcı oluşturun
String[] list = new String[10];
ArrayList<String> list = new ArrayList<String>();
Eleman sayısını al
int n = list.length;
int n = list.size();
Bir diziden/koleksiyondan bir öğe alın
String s = list[3];
String s = list.get(3);
Bir diziye eleman yaz
list[3] = s;
list.set(3, s);

"Peki ArrayList neden daha iyi? Anlayabildiğim kadarıyla kod artık daha uzun."

"İlk olarak, ArrayList, programcıların her zaman gerçekleştirmesi gereken birkaç ek işlemi destekler. Sıradan bir dizi bu işlemleri desteklemez. Örneğin, bir dizinin ortasından boşluk bırakmadan öğe eklemek veya silmek. "

"İkincisi, dizinin boyutunu değiştirebilme yeteneği. Bir öğe daha eklemeniz gerektiğinde, ancak dahili dizide hiç boş alan olmadığında, ArrayList içinde şunlar olur :

a) Mevcut iç diziden %50 daha büyük olan başka bir dizi artı bir eleman oluşturulur.

b) Eski dizideki tüm öğeler yeni diziye kopyalanır.

c) Yeni dizi, ArrayList nesnesinin iç dizisi olarak kaydedilir. Eski dizi çöp ilan edildi (sadece ona bir referans kaydetmeyi bırakıyoruz)."

Sıralamak Dizi Listesi
Dizinin sonuna bir öğe ekleyin
Bu işlem desteklenmiyor
list.add(s);
Dizinin ortasına bir öğe ekleyin
Bu işlem desteklenmiyor
list.add(15, s);
Dizinin başına bir öğe ekleyin
Bu işlem desteklenmiyor
list.add(0, s);
Diziden bir öğeyi silin
ile bir elemanı silebiliriz list[3] = null. Ancak bu, dizide bir 'delik' bırakacaktır.
list.remove(3);

"Bu ArrayList ile nasıl çalışırız?"

"Aslında sıradan bir dizide yaptığımız gibi. Bakın. Bir ArrayList ile çalışmayı bir diziyle çalışmaya benzetelim. Farz edelim ki '10 dizgide okuyup bunları ekranda ters sırayla görüntülememiz ' gerekiyor."

"Şuna bak:

bir dizi ile
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
String[] list = new String[10];
for (int i = 0; i < list.length; i++)
{
  String s = reader.readLine();
  list[i] = s;
}

// Display the contents of the array
for (int i = 0; i < list.length; i++)
{
  int j = list.length - i - 1;
  System.out.println( list[j] );
}
}
ArrayList ile
public static void main(String[] args)
{
Reader r = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(r);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++)
{
  String s = reader.readLine();
  list.add(s);
}

// Display the contents of the collection
for (int i = 0; i < list.size(); i++)
{
  int j = list.size() - i - 1;
  System.out.println( list.get(j) );
}
}

Her sütunda benzer eylemleri vurgulamak için aynı rengi kullandım."

"Bir yanda her şey farklı, diğer yanda hala aynı."

"Doğru. Bir ArrayList ile çalışırken köşeli parantez kullanmamamız dışında . Bunun yerine get , set ve add yöntemlerini kullanıyoruz ."

"Evet, o kadarını topladım. Yine de hemen hemen aynı görünüyor."