giriiş

Neredeyse her programın bir takım veri depolaması gerekir. Dizeler ve sayılar, nesneler vb. Olabilir. Diziler mükemmel bir depolama çözümüdür. Ancak dizilerin belirli sınırlamaları vardır. Örneğin, boyutları sabittir, öğeler kaldırılamaz ve ortasına öğe ekleyemezsiniz. Bu ve diğer sınırlamaları aşmak için koleksiyonlar oluşturuldu. Tüm koleksiyon türleri (ve bu derste daha sonra göreceğimiz gibi birçoğu vardır) kendilerini dinamik olarak yeniden boyutlandırma yeteneğine sahiptir. Bazı koleksiyon türleri, sıralı öğeleri depolayabilir ve yeni öğeleri eklendikçe otomatik olarak sıraya koyabilir.

Bu derste, Java Collections Framework'deki temel koleksiyonların sınıf hiyerarşisini tanıyacağız . Standart Java Collections Framework'ün yeteneklerini genişleten çeşitli alternatif kitaplıklar da vardır . Bunlardan en popüleri Guava'dır (Google Collections Library).

*Diyagramda tüm arabirimler ve sınıflar gösterilmemiştir. Bazıları anlaşılmasını kolaylaştırmak için çıkarılmıştır.

Temel arayüzler

Diyagram, geri kalan sınıfları ve arayüzleri oluşturmak için uygulanan iki temel arayüz olduğunu göstermektedir.

Şimdi bu arayüzlere bir göz atalım:

  1. Koleksiyon — Bir dizi öğe (nesne) içeren sıradan bir koleksiyon. Bu koleksiyon, öğelerle çalışmak için temel yöntemlere sahiptir: ekle ( add , addAll ), remove ( remove , removeAll , clear ), ara ( içerir , içerirAll ), koleksiyonun boş olup olmadığını kontrol edin ( isEmpty ) ve boyut alın ( size ).

  2. Harita — Anahtar/değer çiftleri olarak yapılandırılmış bir koleksiyon. Ayrıca, bir Haritadaki her anahtarbenzersizdir: iki anahtarın hiçbiri aynı değere sahip değildir. Bu koleksiyona bazen sözlük denir. Harita ayrı bir arayüzdür. Collection arabirimini uygulamaz , ancak Java Collections Framework'ün bir parçasıdır.

Bir Haritadaki öğelerle çalışmak için yararlı yöntemler :

  • ekle ( koy , hepsini koy )

  • get ( al , keySet , değerler , entrySet )

  • kaldırmak ( kaldırmak , temizlemek )

  • arama ( anahtar içerir , içerir Değer )

  • koleksiyonun boş olup olmadığını kontrol edin ( isEmpty )

  • boyut al ( boyut )

Şimdi her biri hakkında daha fazla konuşalım.

Koleksiyon arayüzü

Collection arabirimi , tek bir yöntemi olan Iterable arabirimini genişletir : iterator() . Bizim için bu, Iterable'ı devralan herhangi bir koleksiyonun bir yineleyici döndürebileceği anlamına gelir.

Yineleyici , özel uygulaması ne olursa olsun herhangi bir koleksiyonun öğelerine erişmek için kullanabileceğiniz özel bir nesnedir.

Şekil, 3 arayüzün Koleksiyon arayüzünü miras aldığını göstermektedir: List , Queue ve Set . Şimdi her birine kısaca bakacağız.

Liste, yinelenen değerlere izin veren sıralı bir koleksiyondur. Bir Listenin belirli bir özelliği,öğelerinin numaralandırılmış olması ve numara (dizin) ile erişilebilmesidir.

Kuyruk , öğeleri kuyruğa eklendikleri sırayla saklar.

Listeden farklı olarak Küme, tekrarlanan öğelere izin vermeyen sırasız bir koleksiyonu temsil eder. Set arayüzü , matematiksel bir set kavramına karşılık gelir .

Harita arayüzünün uygulamaları

Harita arayüzünün, benzersiz anahtarlar ve değerler arasında bir eşlemeyi temsil ettiğini görebiliriz .


interface Map<K, V>

burada K, anahtarların tipidir ve V , saklanan değerlerin tipidir.

Bir anahtar kullanarak, bir Haritadan veri çıkarabiliriz . Bir Map öğesine öğe eklemek için bir anahtar ve bir değer belirtmeliyiz.

Map'in bazı uygulamalarına bakalım :

  1. HashMap, hash tablolarına dayanan bir Harita uygulamasıdırNull da dahil olmak üzere herhangi bir türdeki anahtarları ve değerleri depolayabilir. Öğelerin sırası garanti edilmez.

  2. LinkedHashMap , verileri bağlantılı bir öğe listesi olarak depolayan bir veri yapısıdır. Öğeler, eklendikleri sırayla listede görünür.

  3. TreeMap, SortedMap arayüzünü uygular( NavigableMap arayüzü aracılığıyla). Bu yapıdaki öğeler sıralı olarak saklanır (yeni bir öğe eklendiğinde koleksiyon otomatik olarak sıralanır). TreeMap, hızlı alma ile büyük miktarda sıralanmış veriyi depolamak için harikadır.

Eski koleksiyonlar:

Java, önceki sürümlerden eskimiş koleksiyonlara sahiptir (geriye dönük uyumluluğu korumak için). Bu eski koleksiyonlar yeni kodda kullanılmamalıdır:

  • Numaralandırma — Yineleyici arayüzüne benzer;

  • Vektör — öğelerin sıralı bir listesi ve ArrayList sınıfına benzer;

  • Yığın — bir yığın kitapla nasıl etkileşim kuracağınız gibi öğeleri depolayan ve yöneten yığın veri yapısının bir uygulaması. Yığına öğe eklemek ( push ) ve onları çıkarmak ( pop ) için yöntemler vardır;

  • Sözlük — Harita arabirimine benzer, ancak soyut bir sınıftır;

  • Hashtable — HashMap'e benzer.

Bu makalede Collections Framework hakkında daha fazla bilgi edinebilirsiniz .