Bölüm 5 · SimülatörKoleksiyonların İç Yapısı? ← Bölüm 5List<String> liste = new ArrayList<>(4); KapatKoleksiyonların İç YapısıAmaç: ArrayList ve HashMap yöntemlerinin içeride ne yaptığını ve kaç birim iş tuttuğunu görmek.ArrayListÖğeler içteki bir dizide tutulur. size() dolu hücre sayısıdır; kapasite dizinin uzunluğudur.Dizi dolunca yeni kapasite eski + eski / 2 (yaklaşık 1,5 kat) olur, bütün öğeler yeni diziye kopyalanır. new ArrayList<>() diziyi ilk add çağrısında 10 hücreyle ayırır.add(i, e) ve remove(i) i'den sonraki öğeleri birer hücre kaydırır: O(n). get(i) ve sona ekleme O(1); arada bir yapılan kopyalama sona eklemeyi amortize O(1) yapar.HashMapAnahtarın hashCode() değeri h ^ (h >>> 16) ile karıştırılır; & (n − 1) son bitleri alarak kova numarasını verir (n: kova sayısı, 2'nin kuvveti).Aynı kovaya düşen girdiler bir zincir (bağlı liste) oluşturur. Arama önce hash'leri karşılaştırır; equals yalnızca hash'ler eşitse çağrılır. "Aa" ile "BB"'nin hashCode() değeri aynıdır (2112).Girdi sayısı eşiği (kova sayısı × 0,75) aşınca kova sayısı ikiye katlanır; her girdi ya aynı kovada kalır ya da i + eski n kovasına geçer.Bir zincir 8 girdiyi aşınca Java onu ağaca dönüştürür (tablo küçükse önce büyütür); bu simülatör kova başına en çok 8, toplam en çok 24 girdi gösterir.Nasıl kullanılır?Soldan yapıyı seçin, bir işlem düğmesine basın. İşlem adım adım oynar; Kendiliğinden oynat kapalıysa Adım ▶ (klavyede →) ile ilerler, Sona ⏭ işlemi bitirir.Alttaki sayaçlar birim işlemleri gösterir: kaydırma, kopyalama, karşılaştırma, yeniden yerleştirme.Kendini dene açıkken işlemden önce kaç öğenin kayacağını, yeni kapasiteyi ya da kova numarasını tahmin edersiniz.Kıyasla sekmesi n öğeli bir yapıda tipik işlemlerin yaklaşık adım sayılarını yan yana koyar.Kapasite dizileri ve kova yerleşimi, aynı anahtarlarla gerçek Java 8 ArrayList ve HashMap nesnelerinin iç alanları okunarak doğrulanmıştır.İlgili sunum: Bölüm 5 · Koleksiyonlar (ArrayList Nasıl Büyür?, Ortaya Ekleme ve Silme, HashSet ve Karma, HashMap Sınıfı).