1. Kaplar ve koleksiyonlar

Konteynerler veya koleksiyonlar, birkaç nesneyi aynı anda depolamanıza ve işlemenize izin veren sınıflardır. Zaten iki tür kap biliyorsunuz: diziler ve listeler.

Java, her biri öğeleri kendine özgü bir şekilde depolayan birkaç düzine koleksiyona sahiptir. İşte bunlardan birkaçı:

Toplamak Sınıf Tanım
List
ArrayList
Liste
LinkedList
Bağlantılı liste
Vector
Vektör
Stack
Yığın
Set
HashSet
Ayarlamak
TreeSet
LinkedHashSet
Queue
PriorityQueue
Sıra
ArrayQueue
Map
HashMap
Harita/Sözlük
TreeMap
HashTable

İsimler burada biraz belirsiz. Çoğu programlama dilinde, bu veri yapılarının tümü koleksiyon olarak adlandırılır, ancak Java'da değildir. Java'da, bu sınıflardan bazıları arabirimi uygularken Collectiondiğerleri uygulamaz.

Buna göre, koleksiyonlar geniş anlamda koleksiyonlara ve dar anlamda koleksiyonlara (sadece arayüzü uygulayanlar ) ayrılır Collection.

Karışıklığı önlemek için, koleksiyonlardan bahsettiğimizde, kelimenin dar anlamıyla, yani Collectionarayüzü uygulayan sınıfları kastediyoruz. , ve türlerinin tümü koleksiyonlardır List. Geniş anlamda koleksiyonlara genellikle kaplar denir . Bunlar, benzeri türleri ve dizileri içerir.SetQueueMap


2. HashSetkoleksiyon

Sınıf HashSet, tipik bir set koleksiyonudur. Birçok yönden sınıfa benzer ArrayList. Bazı yönlerden, daha ilkel bir versiyondur.

HashSetAşağıdaki gibi bir ifade kullanarak bir nesne oluşturabilirsiniz :

HashSet<Type> name = new HashSet<Type>();

TypeKoleksiyonda depolayacağımız öğelerin türü nerede HashSet.

Sınıfın HashSetaşağıdaki gibi yöntemleri vardır:

Yöntem Tanım
void add(Type value)
valueÖğeyi koleksiyona ekler
boolean remove(Type value)
valueÖğeyi koleksiyondan kaldırır . Böyle bir öğe olup olmadığını
döndürürtrue
boolean contains(Type value)
Koleksiyonun bir valueöğesi olup olmadığını kontrol eder
void clear()
Tüm öğeleri kaldırarak koleksiyonu temizler
int size()
Koleksiyondaki öğelerin sayısını döndürür

İşte bir küme kullanmanın bir örneği.

Kullanıcı merhaba derse veda eden bir program yazalım. Daha ilginç hale getirmek için, programımıza birkaç dilde "merhaba" kelimesini anlama yeteneği vereceğiz.

kod Not
HashSet<String> set = new HashSet<String>();

set.add("Hello");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Goodbye!");
HashSetÖğeleri depolayan bir nesne oluşturun String.


Değişkene çeşitli dillerdeki selamları ekliyoruz set.




Konsoldan bir satır okuyun.


Dize selam setimizdeyse, o zaman vedalaşırız.


3. Ayarla

Koleksiyon Set, bir dizi öğeyi tutmak için tasarlanmıştır. Bu yüzden ona (küme) denir Set. Bu koleksiyonun üç özelliği vardır.

Küme üzerindeki işlemler

Bir kümeyle yapabileceğiniz yalnızca üç şey vardır: kümeye öğeler ekleyin, kümeden öğeleri kaldırın ve kümenin belirli bir öğe içerip içermediğini kontrol edin. Bu kadar.

Sipariş yok

Bu koleksiyondaki öğelerin dizinleri yoktur. Bir dizine göre bir öğe alamaz veya belirli bir dizindeki bir koleksiyona değer yazamazsınız. Bir kümenin hayır get()ve set()yöntemleri vardır.

Benzersiz öğeler

Bir kümedeki tüm öğeler benzersizdir. Bir listeden farklı olarak, bir küme bir öğenin yalnızca bir örneğini içerebilir. Bir nesne ya kümededir ya da değildir - üçüncü bir seçenek yoktur. Bir renk grubuna üç kez siyah ekleyemezsiniz. Ya oradadır ya da değildir.

Elemanları bulma

Yeni bir öğe eklediğinizde, bir öğeyi kaldırdığınızda veya bir kümede bir öğe olup olmadığını kontrol ettiğinizde, yöntemde öğe için bir arama yapılır. Geçirilen öğe, koleksiyonun öğeleriyle önce tarafından , ardından eşleşme hashCode()tarafından döndürülen değerler ise tarafından karşılaştırılır .hashCode()equals()



4. Koleksiyonları karşılaştırma: ListvsSet

İki koleksiyon türünü karşılaştıralım: Listve SetBiri diğerinden daha avantajlı olduğunda ve tersi olduğunda temel farklılıklara bakacağız.

Örnek olarak oyuncakları kullanarak List ve Set'i karşılaştırmaya çalışalım.

List(Liste) koleksiyonu, bir oyun odasında duvar boyunca düzenlenmiş bir dizi oyuncak gibidir. Listenin sonuna oyuncak ekleyebilirsiniz. Gerçekten ihtiyacınız varsa, ortasına da yerleştirebilirsiniz (ancak mevcut oyuncakların bazılarının taşınması gerekecektir).

Her oyuncağın bir dizini vardır. Bir oyuncağa dizini ile atıfta bulunabileceğiniz gibi 7 numaralı oyuncağın yerine 13 numaralı oyuncağı koyabilirsiniz. 4 numaralı oyuncağı listeden çıkarabilirsiniz. Son olarak, listedeki her oyuncağın dizinini öğrenebilirsiniz.

Set(Set) koleksiyonu daha çok zeminin ortasındaki bir oyuncak yığını gibidir. Yığına bir oyuncak ekleyebilir ve yığından bir oyuncağı çıkarabilirsiniz. Ancak bu oyuncakların kendileriyle ilişkilendirilmiş sabit bir dizini yoktur.

Veya çocuğunuzun doğum günü için bir oyuncak seçtiğinizi varsayalım. Önce oyuncağın onda olup olmadığını düşünürsünüz. Zaten sahip olduğu tüm oyuncaklar, satın almayı tercih etmeyeceğiniz bir oyuncak seti oluşturur.

Bu bakış açısından, "zaten var olan oyuncaklar" setindeki oyuncakların sırasının veya doğum günü çocuğunun belirli bir oyuncağın iki örneğine sahip olmasının da önemli olmadığını görebilirsiniz. Her oyuncağın sırası veya sayısı ile ilgilenmiyorsunuz. Önemsediğiniz şey, sette bulunan her bir benzersiz oyuncağı bilmek.

Bunun gibi durumlar için koleksiyona ihtiyacınız var Set. En popüler uygulaması sınıftır HashSet.