Listeler

Java'da Veri Türleri ve İstisnalar

Jim White

Java Developer

List arayüzü

  • List arayüzü, Collection alt arayüzü
    • Sıralı bir nesne grubu tanımlar
    • Yinelenen nesneler içerebilir
  • List için birkaç uygulama
    • Davranış olarak benzerler
    • Uygulama, nesnelerin arka planda nasıl yönetildiğini belirler
Java'da Veri Türleri ve İstisnalar

List uygulamaları

  • ArrayList - yeniden boyutlandırılabilir, indeksli (diziler gibi), sıralı nesne listesi

ArrayList, indeksli öğelere sahip Java dizilerine benzer

  • LinkedList - nesneler bir sonraki ve önceki nesnelere bağlantılarla bağlanır.

LinkedList, işaretçilerle bağlanan nesne listeleridir

  • Uygulamadan bağımsız olarak, nesneleri aynı şekilde ekleyin, kaldırın, değiştirin
1 See https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html for List types and details
Java'da Veri Türleri ve İstisnalar

ArrayList

  • new ile bir örnek oluşturun ve içerik türünü belirtmek için jenerikleri kullanın
  • Liste sonuna .add(object) ile ekleyin
  • Bir nesneye .get(index) ile erişin
    • ArrayList sıfır tabanlı indeks kullanır
  • Bir nesneyi .set(index, object) ile değiştirin
  • Bir nesneyi .remove(index) ile kaldırın
  • Tüm nesneleri .clear() ile boşaltın
  • Nesne sayısı .size()
import java.util.ArrayList;
...
ArrayList<String> animals
  = new ArrayList<String>();

animals.add("horse"); animals.add("cow"); animals.add("horse"); // Yinelenenlere izin verilir
String c = animals.get(1); // c="cow" animals.set(1, "chicken");
// İlk horse'u kaldırır animals.remove(0); // Tüm nesneleri kaldırır animals.clear();
animals.size();
Java'da Veri Türleri ve İstisnalar

Nesneler ve ilkel türler

  • Bir ilkel türü Collections Framework nesnesine eklemek için sarmalayıcıları kullanın
  • Eklenen ilkel türler "otomatik kutulanır"
    • Autobox: ilkel türün otomatik olarak sarmalayıcıya konması işlemi
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(5));
list.add(6);  // 6 otomatik olarak Integer ile sarılır ve eklenir
  • Otomatik kutulama tüm Collections Framework nesnelerinde çalışır
Java'da Veri Türleri ve İstisnalar

Heterojen koleksiyonlar

  • Collections Framework veri yapıları heterojen olabilir
    • Heterojen = farklı türden nesneleri tutar
    • Tür parametresi olarak Object kullanın
ArrayList<Object> list = new ArrayList<Object>(); // Herhangi bir nesneye izin ver
list.add(new Integer(5)); // Bir Integer ekle
list.add(6); // Otomatik kutulama ile Integer ekle
list.add("Hello"); // Bir String ekle
Java'da Veri Türleri ve İstisnalar

Bir List üzerinde döngü

  • Bir List içindeki nesneleri döngülemek için "for each" söz dizimini kullanın
ArrayList<String> animals = new ArrayList<String>();
animals.add("horse");
animals.add("cow");
animals.add("chicken");

for (String animal : animals) { // ArrayList'in tümünde dolaşmak için for-each
    System.out.println(animal);
}
horse
cow
chicken
Java'da Veri Türleri ve İstisnalar

List println

  • Bir List örneğinin (ör. ArrayList) içeriği println ile gösterilebilir
ArrayList<String> animals = new ArrayList<String>();
animals.add("horse");
animals.add("cow");
animals.add("chicken");
System.out.println(animals);  // ArrayList'teki tüm öğeleri göster

ArrayList<Object> list = new ArrayList<Object>();
list.add(5);
list.add("Hello");
System.out.println(list);  // ArrayList'teki tüm öğeleri göster
[horse, cow, chicken]
[5, Hello]
Java'da Veri Türleri ve İstisnalar

LinkedList

  • LinkedList, ArrayList gibi oluşturulur
  • LinkedList, ArrayList ile aynı yöntemlere sahiptir
import java.util.LinkedList;
...
LinkedList<String> cars // Yeni bir ... oluştur
  = new LinkedList<String>(); // ... LinkedList
cars.add("Ford"); // Listeye nesne ekle
cars.add("Mercedes");
String c = cars.get(1);
cars.set(1, "Toyota"); // Nesneyi değiştir
System.out.println(cars); // Listeyi yazdır
cars.remove(0); // Nesne kaldır
cars.clear();  // Tüm nesneleri kaldır
cars.size(); // Liste uzunluğu
[Ford, Toyota]
Java'da Veri Türleri ve İstisnalar

Ek LinkedList yöntemleri

  • Bazı ek yöntemler
    • addFirst() listenin başına ekler
    • addLast() listenin sonuna ekler
    • removeFirst() baştan kaldırır
    • removeLast() sondan kaldırır
cars.addFirst("Fiat"); // Başa ekle
cars.addLast("BMW"); // Sona ekle
cars.removeFirst(); // İlk nesneyi kaldır
cars.removeLast(); // Son nesneyi kaldır
Java'da Veri Türleri ve İstisnalar

Koleksiyon türü benzerlikleri

  • ArrayList ve LinkedList aynı görünür
    • Collections Framework içindeki diğer türler de benzerlikler taşır
    • Bu kasıtlıdır
  • Ortak bir arayüzü paylaşırlar: List
    • Çok biçimliliğe bir örnek ("çok-biçim")
Java'da Veri Türleri ve İstisnalar

ArrayList vs LinkedList

  • ArrayList ve LinkedList (veya herhangi bir List) üzerindeki işlemler aynıdır
    • Hangi List türünün seçileceği kullanıma bağlıdır
  • ArrayList için dikkat edilecekler:
    • Rastgele erişimde hızlıdır (ör: list.get(11))
    • Ortaya ekleme/çıkarma işlemlerinde daha yavaştır
    • Çünkü ekleme/çıkarma sırasında nesneler fiziksel olarak taşınır

ArrayList ortasına eklemek çok sayıda taşıma gerektirir

Java'da Veri Türleri ve İstisnalar

ArrayList vs LinkedList

  • LinkedList için dikkat edilecekler:
    • Rastgele erişimde daha yavaştır (ör: list.get(11))
    • Ortaya ekleme/çıkarma işlemlerinde daha hızlıdır
    • Çünkü nesneler taşınmaz; yalnızca birkaç başvuru güncellenir

LinkedList ortasına eklemek yalnızca bazı işaretçileri değiştirmeyi gerektirir

Java'da Veri Türleri ve İstisnalar

Vamos praticar!

Java'da Veri Türleri ve İstisnalar

Preparing Video For Download...