01
Koleksiyonlar
Koleksiyon çerçevesinin arayüz hiyerarşisi ve gerçekleştirimleri, liste, küme ve kuyruk seçiminin dayandığı garantiler, karma ve sıralı sözlüklerin ayrıldığı yer, yineleyicinin gezinme sırasında değişikliğe verdiği yanıt, doğal sıra ile karşılaştırıcının kapsam farkı.
- 01 Koleksiyon Çerçevesi Aynı üç gerçekleştirim dört ayrı aile için yan yana koşturuluyor ve onbeş gözlemin yedisi arayüz garantisi, sekizi yalnız seçilen sınıfın gerçekleştirim davranışı çıkıyor. Sınırlayıcı ölçüm bu ayrımın kendisini sınırlıyor: dört ögeli bir kaynakta PriorityQueue'nun gezinme sırası çıkış sırasıyla rastlantı eseri eşleşiyor, beşinci öge eklenince ayrım yeniden görünür oluyor.
- 02 Liste, Küme ve Kuyruk Aynı altı ögelik iş yükü liste, küme ve kuyruk gerçekleştirimine birden verilip her birinin girdiden ne düşürdüğü sayılıyor: liste hiçbir şey düşürmüyor, küme üç bilgiyi düşürüyor, kuyruk yalnızca konum erişimini. Sınırlayıcı ölçüm LinkedList'in aynı anda hem liste hem kuyruk olmasından doğuyor: iki arayüz de bir remove sözü veriyor, sözler tek bir çağrı satırında çakışıyor ve birebir aynı yazılan remove(1) iki ayrı iş yapıyor — garantilerin ikisi de yerinde, boşluk çağıranın yazdığı satırda ve kırılması sessiz.
- 03 Sözlükler Anahtar-değer sözlüğünün üç sözü — anahtarın tekilliği, anahtar görünümünün canlılığı, yok anahtarın boş değer vermesi — üç gerçekleştirimde de aynı çıkıyor ve arayüze ait oluyor. Gezinme sırası, boş anahtar kabulü ve anahtarın karşılaştırılabilir olma zorunluluğu ise karma ile sıralı gerçekleştirim arasında ayrışıyor. Çağıranın kuralı ilk kez merkeze alınıyor: equals yazıp hashCode yazmayan bir anahtarla arama hiçbir istisna vermeden boş değer döndürüyor, aynı anahtar sıralı bir sözlükte ise sessizce bulunuyor çünkü orada kullanılan söz compareTo.
- 04 Yineleyiciler ve Eşzamanlı Değişiklik Yineleyicinin temel sözü — tükendiğinde NoSuchElementException — üç ayrı gerçekleştirimde birebir aynı çıkıyor. Ama gezinme sırasında kap değişirse üç ayrı yanıt görülüyor: erken hata veren, anlık kopya üzerinden gezen, hiçbir şey söylemeyen. Erken hatanın kendisi de bir garanti değil bir en iyi çaba çıkıyor: aynı silme işlemi bir konumda istisna verirken sondan bir önceki ögede sessizce ve bir eksik biten bir döngü bırakıyor. Sınırlayıcı ölçüm, yineleyicinin kendi remove'unun bu kuralın dışında kaldığını gösteriyor.
- 05 Karşılaştırma ve Sıralama Doğal sıra bir tipin kendi compareTo'sunda durur, karşılaştırıcı ise çağıranın dışarıdan verdiği ayrı bir nesnede; aynı veri iki ayrı sırayla dizilebiliyor. Kararlı sıralama List'in kendi sözü ve iki ayrı liste gerçekleştiriminde birebir aynı çıkıyor. Çağıranın kuralı: equals ile uyumsuz bir karşılaştırıcı sıralı bir kümede iki ayrı ögeyi bire indiriyor, geçişli olmayan bir karşılaştırıcı küçük girdide sessizce yanlış sıralıyor ve yeterince büyük girdide adıyla düşüyor. Sınırlayıcı ölçüm aynı karşılaştırıcının bir listede hiçbir öge kaybetmediğini gösteriyor — kusuru doğuran karşılaştırıcı değil, onu tekillik kararına çeviren kaptır.