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.