Java - Koleksiyon Çerçevesi

Java 2'den önce, Java, Dictionary, Vector, Stack, ve Propertiesnesne gruplarını saklamak ve işlemek için. Bu sınıflar oldukça yararlı olsalar da, merkezi, birleştirici bir temadan yoksundu. Bu nedenle, Vector'ü kullanma şekliniz, Özellikler'i kullanma şeklinizden farklıydı.

Tahsilat çerçevesi, aşağıdakiler gibi birkaç hedefi karşılamak için tasarlanmıştır:

  • Çerçeve yüksek performanslı olmalıydı. Temel koleksiyonlar (dinamik diziler, bağlantılı listeler, ağaçlar ve hashtable'lar) için uygulamalar oldukça verimli olacaktı.

  • Çerçeve, farklı koleksiyon türlerinin benzer şekilde ve yüksek derecede birlikte çalışabilirlikle çalışmasına izin vermeliydi.

  • Çerçevenin bir koleksiyonu kolayca genişletmesi ve / veya uyarlaması gerekiyordu.

Bu amaçla, tüm koleksiyon çerçevesi bir dizi standart arabirim etrafında tasarlanmıştır. Gibi çeşitli standart uygulamalarLinkedList, HashSet, ve TreeSetBu arayüzlerden, olduğu gibi kullanabileceğiniz ve isterseniz kendi koleksiyonunuzu da uygulayabileceğiniz sağlanmıştır.

Bir koleksiyon çerçevesi, koleksiyonları temsil etmek ve işlemek için birleşik bir mimaridir. Tüm koleksiyon çerçeveleri aşağıdakileri içerir -

  • Interfaces- Bunlar koleksiyonları temsil eden soyut veri türleridir. Arayüzler, koleksiyonların temsillerinin ayrıntılarından bağımsız olarak manipüle edilmesine izin verir. Nesne yönelimli dillerde, arayüzler genellikle bir hiyerarşi oluşturur.

  • Implementations, i.e., Classes- Bunlar koleksiyon arayüzlerinin somut uygulamalarıdır. Özünde, yeniden kullanılabilir veri yapılarıdır.

  • Algorithms- Bunlar, toplama arayüzlerini uygulayan nesneler üzerinde arama ve sıralama gibi yararlı hesaplamalar gerçekleştiren yöntemlerdir. Algoritmaların polimorfik olduğu söylenir: yani aynı yöntem, uygun toplama arayüzünün birçok farklı uygulamasında kullanılabilir.

Koleksiyonlara ek olarak, çerçeve çeşitli harita arayüzlerini ve sınıflarını tanımlar. Haritalar, anahtar / değer çiftlerini depolar. Haritalar , terimin doğru kullanımında koleksiyonlar olmasa da, koleksiyonlarla tamamen bütünleşmiştir.

Koleksiyon Arayüzleri

Koleksiyon çerçevesi birkaç arabirimi tanımlar. Bu bölüm, her arayüze genel bir bakış sağlar -

Sr.No. Arayüz ve Açıklama
1 Koleksiyon Arayüzü

Bu, nesne gruplarıyla çalışmanıza olanak tanır; koleksiyon hiyerarşisinin en üstündedir.

2 Liste Arayüzü

Bu uzar Collection ve bir List örneği, sıralı bir öğe koleksiyonunu depolar.

3 Set

Bu, Koleksiyonu benzersiz öğeler içermesi gereken kümeleri işleyecek şekilde genişletir.

4 SortedSet

Bu, Set'i sıralanmış kümeleri işleyecek şekilde genişletir.

5 Harita

Bu, benzersiz anahtarları değerlerle eşler.

6 Harita Giriş

Bu, bir haritadaki bir öğeyi (bir anahtar / değer çifti) tanımlar. Bu, Harita'nın iç sınıfıdır.

7 Sıralanmış Harita

Bu, haritayı genişletir, böylece anahtarlar artan bir sırada tutulur.

8 Numaralandırma

Bu eski arabirim, bir nesne koleksiyonundaki öğeleri numaralandırabileceğiniz (her seferinde bir tane elde edebileceğiniz) yöntemleri tanımlar. Bu eski arayüz, Iterator tarafından yerini almıştır.

Koleksiyon Sınıfları

Java, Koleksiyon arabirimlerini uygulayan bir dizi standart koleksiyon sınıfı sağlar. Sınıflardan bazıları olduğu gibi kullanılabilen tam uygulamalar sağlarken diğerleri soyut sınıflardır ve somut koleksiyonlar oluşturmak için başlangıç ​​noktaları olarak kullanılan iskelet uygulamaları sağlar.

Standart koleksiyon sınıfları aşağıdaki tabloda özetlenmiştir -

Sr.No. Sınıf ve Açıklama
1

AbstractCollection

Koleksiyon arayüzünün çoğunu uygular.

2

AbstractList

AbstractCollection'ı genişletir ve List arayüzünün çoğunu uygular.

3

AbstractSequentialList

AbstractList'i, öğelerine rastgele erişim yerine sıralı erişim kullanan bir koleksiyon tarafından kullanılmak üzere genişletir.

4 Bağlantılı liste

AbstractSequentialList'i genişleterek bağlantılı bir liste uygular.

5 Dizi Listesi

AbstractList'i genişleterek dinamik bir dizi uygular.

6

AbstractSet

AbstractCollection'ı genişletir ve Set arayüzünün çoğunu uygular.

7 HashSet

AbstractSet'i karma tabloyla kullanmak üzere genişletir.

8 LinkedHashSet

Ekleme sırası yinelemelerine izin vermek için HashSet'i genişletir.

9 Ağaç Kümesi

Bir ağaçta saklanan bir seti uygular. AbstractSet'i genişletir.

10

AbstractMap

Harita arayüzünün çoğunu uygular.

11 HashMap

AbstractMap'i karma tablo kullanacak şekilde genişletir.

12 Ağaç Haritası

AbstractMap'i bir ağaç kullanacak şekilde genişletir.

13 WeakHashMap

AbstractMap'i zayıf anahtarlara sahip bir karma tablo kullanacak şekilde genişletir.

14 LinkedHashMap

Ekleme sırası yinelemelerine izin vermek için HashMap'i genişletir.

15 IdentityHashMap

AbstractMap'i genişletir ve belgeleri karşılaştırırken referans eşitliğini kullanır.

AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList ve AbstractMap sınıfları yorulmadan çalışmak için bunlara uymak zorundadır, çekirdek toplama arayüzleri iskelet uygulamaları sağlamak.

Java.util tarafından tanımlanan aşağıdaki eski sınıflar, önceki bölümde tartışılmıştır -

Sr.No. Sınıf ve Açıklama
1 Vektör

Bu dinamik bir dizi uygular. ArrayList'e benzer, ancak bazı farklılıklar vardır.

2 Yığın

Yığın, standart bir son giren ilk çıkar yığınını uygulayan bir Vector alt sınıfıdır.

3 Sözlük

Dictionary, bir anahtar / değer depolama havuzunu temsil eden ve daha çok Map gibi çalışan soyut bir sınıftır.

4 Hashtable

Hashtable, orijinal java.util'in bir parçasıydı ve Dictionary'nin somut bir uygulamasıdır.

5 Özellikleri

Özellikler, Hashtable'ın bir alt sınıfıdır. Anahtarın bir Dize olduğu ve değerin de bir Dize olduğu değer listelerini korumak için kullanılır.

6 BitSet

Bir BitSet sınıfı, bit değerlerini tutan özel bir dizi türü oluşturur. Bu dizinin boyutu gerektiği gibi artabilir.

Koleksiyon Algoritmaları

Koleksiyon çerçevesi, koleksiyonlara ve haritalara uygulanabilecek çeşitli algoritmaları tanımlar. Bu algoritmalar, Collections sınıfı içinde statik yöntemler olarak tanımlanır.

Yöntemlerden birkaçı bir ClassCastException, uyumsuz türleri karşılaştırma girişiminde bulunulduğunda veya bir UnsupportedOperationException, değiştirilemez bir koleksiyonu değiştirme girişiminde bulunulduğunda ortaya çıkar.

Koleksiyonlar üç statik değişken tanımlar: EMPTY_SET, EMPTY_LIST ve EMPTY_MAP. Hepsi değişmezdir.

Sr.No. Algoritma ve Açıklama
1 Koleksiyon Algoritmaları

İşte tüm algoritma uygulamalarının bir listesi.

Yineleyici Nasıl Kullanılır?

Genellikle, bir koleksiyondaki öğeler arasında geçiş yapmak isteyeceksiniz. Örneğin, her bir öğeyi görüntülemek isteyebilirsiniz.

Bunu yapmanın en kolay yolu, Yineleyici veya ListIterator arabirimini uygulayan bir nesne olan bir yineleyici kullanmaktır.

Yineleyici, bir koleksiyonda dolaşmanıza, öğeleri edinmenize veya kaldırmanıza olanak tanır. ListIterator, bir listenin çift yönlü geçişine ve öğelerin değiştirilmesine izin vermek için Yineleyiciyi genişletir.

Sr.No. Yineleme Yöntemi ve Açıklama
1 Java Yineleyiciyi Kullanma

Aşağıda, Iterator ve ListIterator arabirimleri tarafından sağlanan örneklerle birlikte tüm yöntemlerin bir listesi bulunmaktadır.

Karşılaştırıcı Nasıl Kullanılır?

Hem TreeSet hem de TreeMap, öğeleri sıralı bir düzende depolar. Ancak, sıralı düzenin tam olarak ne anlama geldiğini tanımlayan karşılaştırıcıdır .

Bu arayüz, belirli bir koleksiyonu herhangi bir sayıda farklı şekilde sıralamamızı sağlar. Ayrıca bu arayüz, herhangi bir sınıfın herhangi bir örneğini (değiştiremeyeceğimiz sınıflar bile) sıralamak için kullanılabilir.

Sr.No. Yineleme Yöntemi ve Açıklama
1 Java Karşılaştırıcıyı Kullanma

Karşılaştırıcı Arayüzü tarafından sağlanan örneklerle birlikte tüm yöntemlerin bir listesi.

Özet

Java koleksiyon çerçevesi, programcıya önceden paketlenmiş veri yapılarının yanı sıra bunları işlemek için algoritmalara erişim sağlar.

Koleksiyon, diğer nesnelere referansları tutabilen bir nesnedir. Koleksiyon arabirimleri, her koleksiyon türünde gerçekleştirilebilecek işlemleri bildirir.

Koleksiyon çerçevesinin sınıfları ve arabirimleri java.util paketindedir.