"Beynini biraz çalıştırmaya ne dersin? Umarım hâlâ çalışır durumdadır."

"Daha önce, kapsayıcılar ve koleksiyonlar tablosunda aynı arabirimin birden çok uygulamaya sahip olabileceğini gördünüz. Şimdi size buna neden ihtiyacımız olduğunu ve ArrayList'in LinkedList'ten nasıl farklı olduğunu anlatacağım ."

"Mesele şu ki, koleksiyonlar farklı şekillerde uygulanabilir ve hiçbir uygulama her zaman ideal değildir. Bir yaklaşımda, bazı işlemler hızlı, diğerleri yavaştır. Başka bir yaklaşım için bunun tersi geçerli olabilir. Mükemmel bir tek beden yoktur. her şeye uyan çözüm."

"Bu nedenle, aynı koleksiyonun birkaç sürümünün uygulanmasına karar verildi. Her uygulama, bazı dar işlemler dizisi için optimize edilmelidir. Farklı koleksiyonlar bu şekilde ortaya çıktı. Örnek olarak iki sınıfı inceleyelim: ArrayList ve LinkedList ."

ArrayList ve LinkedList - 1

"Dahili olarak, ArrayList sıradan bir dizi olarak uygulanır . Bu nedenle ortaya bir öğe eklemek, önce sonraki tüm öğeleri birer birer kaydırmamızı ve ardından yeni öğeyi boş yuvaya yerleştirmemizi gerektirir. Öğeleri alma ve ayarlama (get, set ) hızlıdır , çünkü bu işlemler yalnızca ilgili dizi öğesini ele alır."

" LinkedList'in farklı bir iç yapısı vardır. Birbirine bağlı öğeler içeren bir liste olarak uygulanır : her biri listedeki sonraki ve önceki öğelere referansları saklayan farklı öğeler kümesi. Böyle bir listenin ortasına bir öğe eklemek için, sadece gelecekteki komşularının referanslarını değiştirmeniz yeterli.Ancak , 130 numaralı elemanı elde etmek için, 0'dan 130'a kadar her nesneyi geçmelisiniz.Başka bir deyişle, get ve set işlemleri yavaş olacaktır.Aşağıdaki tabloya bakın :"

Tanım Operasyon Dizi Listesi Bağlantılı liste
Bir öğe al elde etmek Hızlı Yavaş
Bir öğe ayarla ayarlamak Hızlı Yavaş
Bir eleman ekle (listenin sonuna) eklemek Hızlı Hızlı
Bir öğe ekleyin (isteğe bağlı bir konumda) ekle(i, değer) Yavaş Hızlı
Bir öğeyi kaldır kaldırmak Yavaş Hızlı

"Anlıyorum. Şimdi anlamaya başlıyorum. Belirli bir durumda hangi koleksiyonun en iyi olduğunu bilmeme yardımcı olacak herhangi bir kriter veya kural var mı?"

"Basit tutmak için size şu kuralı vereceğim: Koleksiyonun ortasına sık sık öğe ekleyecek (veya kaldıracaksanız), LinkedList kullanmak daha iyidir. Diğer tüm durumlarda, ArrayList daha iyi çalışır . "

"Nasıl yapılandırıldıklarını daha ileri düzey derslerde inceleyeceğiz, ancak şimdilik bunları kullanarak pratik yapacağız."