Kümeler, Kuyruklar

Java'da Veri Türleri ve İstisnalar

Jim White

Java Developer

Set arayüzü

  • Set de bir tür Collectiondır
    • Yinelenen nesnelere izin vermez
      • Her öğenin benzersiz olmasını garanti eder
    • Set nesneleri genelde sırasızdır (bu yüzden indeks yoktur)
  • Listler, nesnelerin belirli konumlarda olduğu bir hap kutusu gibidir
  • Setler, nesnelerin rastgele tutulduğu bir çuval gibidir

Listeler, nesnelerin belirli konumda indeksle saklandığı hap düzenleyicilere benzer

Setler, nesnelerin rastgele ve sırasız tutulduğu çuvallara benzer

1 Görseller Wikimedia Commons izniyle
Java'da Veri Türleri ve İstisnalar

List vs Set

  • Ne zaman Set kullanılır
    • Öğelerin benzersizliğini garanti eder
    • Arama (lookup) işlemlerinde daha hızlıdır
      • Bir nesnenin Set içinde olup olmadığını kontrol etme
    • Koleksiyon büyüdükçe bellek açısından daha verimlidir
    • Önbelleklerde üyelik testleri için iyidir
      • Örnek: bir belgede benzersiz kelimeleri bulma
Java'da Veri Türleri ve İstisnalar

List vs Set

  • Ne zaman List kullanılır
    • Öğelerin sırasını korur ve yinelenenlere izin verir
    • Konuma göre erişimde daha iyidir
    • Indekse göre ekleme/silmede daha iyidir
    • Öğelerin sırası önemliyse uygundur
      • Örn: bir dizinin adımları veya bir çalma listesindeki şarkılar
Java'da Veri Türleri ve İstisnalar

Set uygulaması

  • Setin birçok uygulaması vardır
    • HashSet yaygın bir uygulamadır
  • HashSet
    • Nesnelerin sırasız bir torbasıdır
    • Ekleme, silme ve aramada diğer Set uygulamalarından daha hızlıdır
    • Genelde diğer Set uygulamalarından daha fazla bellek kullanır
    • Tek bir null saklamaya izin verir

HashSet, bir adet null'a izin veren sırasız nesne torbalarıdır

Java'da Veri Türleri ve İstisnalar

HashSet oluşturma

  • HashSet oluşturmak için jenerik parametreli kurucu kullanın
    HashSet<String> set = new HashSet<String>();
    
  • HashSet, java.util paketindedir
    • İçe aktarma gerekir
    • import java.util.HashSet
Java'da Veri Türleri ve İstisnalar

HashSet yöntemleri

  • Nesne eklemek/çıkarmak için .add() ve .remove() kullanın
  • Bir nesneyi değiştirmek için önce .remove(), sonra .add() kullanın
  • Nesne var mı kontrolü için .contains() kullanın
  • Yinelemeler yok sayılır
  • null kabul edilir
  • Sıra garanti edilmez
set.add("France");
set.add("Japan");
set.add("Brazil");
set.add("Egypt");
set.add(null); // null is allowed
set.remove("Brazil");
boolean z =
  set.contains("France"); // z is true
set.add("Japan"); // Ignored
System.out.println(set);
[null, Japan, Egypt, France]
Java'da Veri Türleri ve İstisnalar

Queue arayüzü

  • Queue veri yapısı ilk giren ilk çıkar (FIFO) sırasıyla işler
    • İlk eklenen ilk çıkarılır
    • Bilet sırası gibi
    • Baş (head) ve kuyruk (tail) vardır

Baş (başlangıç) ve kuyruk (son) işaretli bir kuyruk görseli

  • Queue için birkaç uygulama vardır
    • Davranış ve işlemler benzer
Java'da Veri Türleri ve İstisnalar

ArrayBlockingQueue

  • Yaygın bir Queue uygulaması
    • Altta bir dizi kullanır
  • Dikkat: ArrayBlockingQueue, java.util.concurrent paketindedir
    • java.util paketinde değildir
Java'da Veri Türleri ve İstisnalar

ArrayBlockingQueue oluşturma

  • ArrayBlockingQueue oluşturmak için jenerik parametreli kurucu kullanın
    • Kapasite (nesne sayısı) kurucuda belirtilir
import java.util.concurrent;  // Sınıfın en üstünde

// 4 String saklayabilen yeni kuyruk oluştur
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(4);
Java'da Veri Türleri ve İstisnalar

ArrayBlockingQueue yöntemleri

  • Kuyruğun sonuna eklemek için .add(object) veya .offer(object) kullanın
    • .add(object), Queue doluysa hata fırlatır
    • .offer(object), doluyken yeni nesneyi yok sayar
ArrayBlockingQueue<String> queue 
    = new ArrayBlockingQueue<String>(4);
queue.offer("France");
queue.offer("Japan");
queue.offer("Brazil");
queue.offer("Egypt");
queue.offer("China"); // Ignores China

// Causes IllegalStateException
// queue.add("China");

System.out.println(queue);
[France, Japan, Brazil, Egypt]
Java'da Veri Türleri ve İstisnalar

ArrayBlockingQueue yöntemleri

  • Baştan çıkarmak için .remove() veya .poll() kullanın
    • .remove(), Queue boşsa hata fırlatır
    • .poll(), Queue boşsa null döndürür
  • null kabul edilmez
ArrayBlockingQueue<String> queue 
    = new ArrayBlockingQueue<String>(4);
String x = queue.poll(); // x is null
// Causes NoSuchElementException
// String y = queue.remove();

queue.offer("France");
String next = queue.poll();
System.out.println(next);
France
Java'da Veri Türleri ve İstisnalar

Haydi pratik yapalım!

Java'da Veri Türleri ve İstisnalar

Preparing Video For Download...