Ana içeriğe geç
Modül 4 · Ders 2 ders 2Kurstaki 8/14~15 min
Modül dersleri (2/2)

Koleksiyonlar ve ArrayList

Java'daki geleneksel dizilerin, oluşturulma sırasında tanımlanan sabit bir boyutu vardır. Boyutu dinamik olarak değişebilen veri listeleriyle çalışmak için Java, Java Koleksiyon Çerçevesini sağlar. En sık kullanılan sınıf ArrayList'dır.

ArrayList Sınıfı ve Jenerikler

ArrayList bellekte yeniden boyutlandırılabilir bir dizi uygular. Bir ArrayList bildirmek için, içereceği öğelerin türünü, onu < > açılı parantez içine alarak belirtmeliyiz. Bu özelliğe Jenerikler adı verilir.

ArrayList kullanmak için, onu dosyanın başında java.util.ArrayList adresinden içe aktarmalıyız.

Bildirim ve örnekleme:

Java
import java.util.ArrayList;

ArrayList<String> shoppingList = new ArrayList<>();

Temel Yöntemler

ArrayList üzerindeki temel işlemler şunlardır:

  1. add(element): Listenin sonuna bir öğe ekler.
  2. get(index): Belirtilen dizindeki (0-indeksli) öğeyi döndürür.
  3. size(): Listede mevcut olan öğe sayısını döndürür.
  4. remove(index): Belirtilen dizindeki öğeyi kaldırır.
Java
shoppingList.add("Pane");
shoppingList.add("Latte");

System.out.println("Elementi: " + shoppingList.size()); // Prints 2
System.out.println("Primo elemento: " + shoppingList.get(0)); // Prints "Pane"

Bir Liste Üzerinde Yineleme (Her Biri İçin)

For-each döngüsü, bir koleksiyonun tüm öğelerini yinelemek için ideal yapıdır:

Java
for (String item : shoppingList) {
    System.out.println(item);
}

Array vs ArrayList: Bellek ve Performans

ArrayList statik bir diziden çok daha esnek olmasına rağmen, performans ve bellek değiş tokuşlarını da beraberinde getirir:

  • Statik Dizi: Bitişik bir bellek bloğuna tahsis edilmiştir, sabit bir boyuta sahiptir ve indeks yoluyla öğelere erişim son derece hızlıdır. İlkel türleri ek yük olmadan doğrudan depolar.
  • ArrayList: Dahili olarak, başlangıç ​​kapasitesi (genellikle 10) aşıldığında yeniden boyutlandırılan (daha büyük yeni bir dizi oluşturarak ve eski öğeleri kopyalayarak) bir diziyi yönetir. Üstelik yalnızca nesne referanslarını saklar ve her öğe için bellek yükü oluşturur.

Otomatik Kutulama ve Kutudan Çıkarma

ArrayList yalnızca nesneleri tutabildiğinden, Java, ilkel türler ve ilgili sarmalayıcı sınıfları arasında otomatik olarak dönüşümler gerçekleştirir:

  • Otomatik Kutulama: İlkel türden sarmalayıcı sınıfa otomatik dönüştürme. Örneğin, numbers.add(42) yazdığınızda, Java otomatik olarak 42 (int) değerini Integer.valueOf(42) (Tamsayı) biçimine dönüştürür.
  • Kutudan çıkarma: Bir sarmalayıcı sınıftan ilkel bir türe otomatik dönüştürme. Örneğin, int num = numbers.get(0) komutunu çalıştırdığınızda, Java dahili olarak Integer öğesini int biçimine dönüştürür.

Kendin dene

Egzersiz#java.m4.l2.e1
Denemeler: 0Yükleniyor…

ArrayList'i içe aktarın, adlandırılmış dizelerden oluşan bir ArrayList bildirin. Alice ve Bob'u listeye ekleyin, ardından size() yöntemini kullanarak boyutunu yazdırın.

Düzenleyici yükleniyor…
İpucu göster

En üste `import java.util.ArrayList;' ifadesini ekleyin. Listeyi `ArrayList<String> names = new ArrayList<>();` ile oluşturun, öğeleri ekleyin ve boyutunu `names.size()` ile yazdırın.

3 denemeden sonra çözüm mevcut

Egzersiz#java.m4.l2.e2
Denemeler: 0Yükleniyor…

Tamsayı adlı sayıların ArrayList'ini bildirin, 42 sayısını ekleyin ve get() işlevini kullanarak 0 dizininden alarak bunu yazdırın.

Düzenleyici yükleniyor…
İpucu göster

`ArrayList<Integer> numaraları = new ArrayList<>();' (Integer sarmalayıcı sınıfıyla birlikte) kullanın ve bunu `System.out.println(numbers.get(0));' ile yazdırın.

3 denemeden sonra çözüm mevcut

Egzersiz#java.m4.l2.e3
Denemeler: 0Yükleniyor…

Renkler adlı bir String ArrayList'i bildirin. Listeye Kırmızı, Yeşil ve Mavi renklerini ekleyin. Son olarak, listede ilerlemek ve her rengi ekrana yazdırmak için her biri için bir döngü kullanın.

Düzenleyici yükleniyor…
İpucu göster

Listeyi `ArrayList<String> colours = new ArrayList<>();' ile bildirin, üç rengi ekleyin ve bunları `System.out.println(c);` kullanarak yazdırmak için `for (String c : colours)` döngüsünü kullanın.

3 denemeden sonra çözüm mevcut