hashset java tutorial with programming examples
Bu eğitici, Java'da HashSet'in ne olduğunu, HashSet yöntemlerini, bununla nasıl uygulanacağını ve yineleneceğini ve programlama örnekleri yardımıyla diğer ilgili kavramları açıklar:
HashSet, nesneleri depolayan bir koleksiyondur. Java'daki HashSet, java.util paketinin 'HashSet' sınıfı kullanılarak uygulanır.
Bu sınıf bir set arabirimi uygular. Depolama için bir HashMap örneği olan HashTable'ı kullanır.
=> Java Yeni Başlayanlar Kılavuzuna Bir Göz Atın.
Ne öğreneceksin:
Java HashSet
HashSet'in bazı özellikleri aşağıda verilmiştir:
- Dahili yapı olarak HashTable olan bir Set arabirimi uygular. HashTable ise bir HashMap örneğidir.
- Öğelerin sırasını korumaz. Öğeler rastgele sırayla saklanır.
- HashSet, yinelenen değerlere izin vermez.
- Set arabiriminden ayrı olarak Klonlanabilir ve Serileştirilebilir bir arabirim uygular.
- HashSet'te null değerlere sahip olabiliriz.
HashSet Sınıf Hiyerarşisi
HashSet sınıfının hiyerarşisi aşağıda verilmiştir:
Yukarıdaki şekilde gösterildiği gibi, HashSet sınıfı, Set arayüzünü uygulayan AbstractSet sınıfını genişletir. Set arayüzü, sırayla yinelenebilir arayüzü genişleten Koleksiyon arayüzünü miras alır.
Java 8 sürümü yeni bir yöntem tanıttı 'Bölücü' HashSet öğelerinin üzerinde geç bağlama gerçekleştiren hızlı bir ayırıcı oluşturan HashSet'te.
HashSet sınıfının genel bildirimi şöyledir:
public class HashSet, AbstractSet'i genişletir Set,
Klonlanabilir, Serileştirilebilir
HashSet'i İçe Aktar
Aşağıda gösterildiği gibi import ifadesini kullanarak HashSet işlevselliğini programa dahil edebiliriz:
java.util.HashSet'i içe aktarın;
veya
import java.util. *;
Java'da HashSet Bildirme
Java'da aşağıdaki gibi bir HashSet nesnesi oluşturabiliriz:
HashSet h = new HashSet ();
HashSet sınıfı, nesneler oluşturmak için aşağıdaki yapıcıları sağlar.
Yapıcı prototip | Açıklama | |
---|---|---|
Kaldır | Boole kaldır (Object o) | HashSet'in bir parçasıysa, belirtilen o öğesini HashSet'ten kaldırır. |
HashSet () | HashSet için varsayılan yapıcı | |
HashSet (int kapasite) | Verilen 'kapasite' ile bir HashSet nesnesi oluşturur. | |
HashSet (int kapasite, float loadFactor) | Verilen 'kapasite' ve 'loadFactor' ile bir HashSet nesnesi oluşturur. | |
HashSet (Koleksiyon c) | Verilen koleksiyondan bir HashSet nesnesi oluşturun. |
Yukarıdaki tabloda gösterildiği gibi, varsayılan kurucudan ayrı olarak, bu sınıf aynı zamanda kapasite ve yük faktörünü ve başka bir koleksiyonu argümanları olarak alan oluşturucular sağlar. Bu kuruculardan herhangi birini kullanarak bu sınıfın nesnelerini oluşturabiliriz.
HashSet'i başlatın
Aşağıdaki Java kodu, HashSet sınıfı nesnesinin bildirimini ve başlatılmasını gösterir. Bu programda, ArrayList'ten bir HashSet sınıf nesnesi oluşturuyoruz. Başlangıçta, ArrayList'i oluşturur ve başlatırız ve sonra bu ArrayList'i bir HashSet nesnesi oluşturmak ve başlatmak için kullanırız.
import java.util.*; class Main{ public static void main(String args()){ //declare and initialize ArrayList ArrayList<String> myList=new ArrayList<String>(); myList.add('Red'); myList.add('Green'); myList.add('Blue'); //Create a HashSet and provide ArrayList in its constructor HashSet<String> mySet=new HashSet(myList); mySet.add('Yellow'); //print the HashSet System.out.println('The HashSet contents:'); Iterator<String> i=mySet.iterator(); while(i.hasNext()) { System.out.print(i.next() + ' '); } } }
Çıktı:
HashSet Java'da Dahili Olarak Nasıl Çalışır?
Dahili olarak, bir HashTable kullanılarak uygulanır. HashTable, HashMap'in bir örneğidir. Ancak HashMap, anahtar-değer çiftlerinden oluşan bir koleksiyondur. Peki HashSet'i bir HashMap'te nasıl saklarız?
HashSet'in nesne değerleri, HashMap'in anahtarlarıdır.
Java HashSet Örneği
Java'da HashSet'in ayrıntılı bir örneğini görelim.
import java.util.*; class Main{ public static void main(String args()){ //Create a HashSet and add elements to it HashSet<String> mySet=new HashSet<String>(); mySet.add('Blue'); mySet.add('Green'); mySet.add('Blue'); mySet.add('Green'); mySet.add('Red'); mySet.add('Brown'); mySet.add('Yellow'); //Iterate through the HashSet and print its elements System.out.println('HashSet contents:'); Iterator<String> itr=mySet.iterator(); while(itr.hasNext()){ System.out.print(itr.next() + ' '); } } }
Çıktı:
Burada, bir HashSet nesnesi oluşturmak için varsayılan kurucuyu kullanıyoruz. Ardından add yöntemini kullanarak HashSet'e öğeler (renkler) ekleriz. Ardından, HashSet'te gezinmek ve içeriği yazdırmak için bir yineleyici kullanıyoruz.
HashSet Yineleyici
Java'da HashSet, aşağıda tartışıldığı gibi iki şekilde çapraz veya yinelenebilir.
Yineleyici Kullanmadan
Burada HashSet üzerinde bir yineleyici tanımlamıyoruz. Bunun yerine, forEach döngüsü kullanıyoruz. Aşağıdaki program, bir forEach döngüsü kullanarak HashSet geçişini gösterir.
import java.util.HashSet; import java.util.Set; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use foreach loop to iterate through the HashSet System.out.println('HashSet contents:'); for (String city : cities_HashSet) { System.out.print(city + ' '); } } }
Çıktı:
Yineleyiciyi Kullanma
Yinelemenin bir sonraki yaklaşımı, bir yineleyici kullanmaktır. Burada, HashSet sınıfı için bir yineleyici tanımlıyoruz ve ardından içinden geçiyoruz.
Aşağıdaki program bu yaklaşımı göstermektedir.
import java.util.HashSet; import java.util.Set; import java.util.Iterator; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use iterator to iterate through the HashSet System.out.println('HashSet contents using Iterator:'); Iterator<String> iter = cities_HashSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Çıktı:
HashSet Yöntemleri / API
Aşağıdaki tablo, HashSet sınıfı tarafından sağlanan yöntemleri gösterir. Her yöntem için prototip ve açıklama sağladık. Görüldüğü gibi, ekleme, kaldırma, boyutlandırma gibi temel işlemlerin yanı sıra içeriği, boşluğu, yineleyiciyi, ayırıcıyı vb. Kontrol etmek için diğer yöntemler için yöntemlerimiz var.
Yöntem | Yöntem Prototipi | Açıklama |
---|---|---|
Ekle | Boole toplamı (E e) | Zaten mevcut değilse, belirtilen e öğesini HashSet'e ekler. |
açık | Boşluk temizle () | HashSet'teki tüm öğeleri temizler veya kaldırır |
klon | Nesne klonu () | Bu HashSet örneğinin basit bir kopyasını döndürmek için kullanılır: öğelerin kendileri klonlanmaz. |
içerir | Boole, (Object o) içerir | HashSet'in verilen o nesnesini içerip içermediğini kontrol eder ve evet ise true döndürür. |
boş | Boolean isEmpty () | HashSet'in boş olup olmadığını kontrol eder. Evet ise doğru döndürür. |
yineleyici | Yineleyici yineleyici () | HashSet'i geçmek için kullanılan bir yineleyici döndürür. |
boyut | İç boyut () | HashSet'te bulunan öğelerin boyutunu veya sayısını döndürür. |
ayırıcı | Ayırıcı ayırıcı () | HashSet'i geçmek için hızlı ve geç bağlanan ayırıcı döndürür. Bu yöntem Java 8'de tanıtıldı. |
HashSet sınıfı tarafından sağlanan yöntemleri açıkladık, şimdi sınıfın ana yöntemlerini gösteren bir örnek uygulayalım.
Aşağıdaki Java programı bu sınıfın yöntemlerini göstermektedir.
import java.util.*; class Main{ public static void main(String args()){ //create a HashSet and initialize it HashSet<String> colors_set=new HashSet<String>(); colors_set.add('Red'); colors_set.add('Green'); colors_set.add('Blue'); colors_set.add('Cyan'); System.out.println('Initial HashSet: '+colors_set); //remove() method => remove specified element colors_set.remove('Red'); System.out.println('
HashSet after remove(Red): '+colors_set); //declare and initialize another list HashSet<String> colors_hash=new HashSet<String>(); colors_hash.add('Yellow'); colors_hash.add('Magenta'); //addAll() method => add another HashSet to existing colors_set.addAll(colors_hash); System.out.println('
HashSet after add(colors_hash): '+colors_set); //removeAll() method => remove all elements specified in the argument colors_set.removeAll(colors_hash); System.out.println('
HashSet after removeAll(colors_hash) method: '+colors_set); //removeIf() => remove if given condition is fulfilled colors_set.removeIf(str->str.contains('Green')); System.out.println('
HashSet after removeIf(contains(Green)) method: '+colors_set); //clear() => delete all elements from the HashSet colors_set.clear(); System.out.println('
HashSet after clear() method: '+colors_set); } }
Çıktı:
HashSet'i Diziye Dönüştür
Verilen HashSet'i bir diziye dönüştürmek için HashSet'in toArray () yöntemini kullanabiliriz. Dizinin veri türü ve boyutunun HashSet'inkiyle eşleşmesi gerektiğini unutmayın.
Aşağıdaki Java programı bu dönüşümü göstermektedir.
import java.util.HashSet; class Main{ public static void main(String() args) { // Create a HashSet & inintialize it HashSet<String> num_HashSet = new HashSet<String>(); num_HashSet.add('One'); num_HashSet.add('Two'); num_HashSet.add('Three'); num_HashSet.add('Four'); // Print HashSet contents System.out.println('HashSet contents: '+ num_HashSet); // Declare an array with size = HashSet size String() numArray = new String(num_HashSet.size()); //use toArray method to convert HashSet to an array num_HashSet.toArray(numArray); // Print Array System.out.println('Array from HashSet: '); for(String val : numArray){ System.out.print(val + ' '); } } }
Çıktı:
HashSet'i Sıralama
Bir HashSet'i Java'da sıralayabiliriz. HashSet öğeleri, öğelerin sırasını korumadığı için orijinal olarak sıralanmaz. Java'da bir HashSet'i sıralamak için iki yaklaşımı izleyebiliriz.
Collections.sort () Yöntemini Kullanma
Bu yaklaşımda HashSet'i bir listeye dönüştürüyoruz. Ardından, listeyi sıralamak için Collections.sort () yöntemini kullanırız. Bu liste daha sonra yazdırılır.
import java.util.*; public class Main { public static void main(String args()) { // Create a HashSet & initialize it HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet: ' + cities_HashSet); // Convert HashSet to ArrayList List<String> cities_list = new ArrayList<String>(cities_HashSet); // Use Collections.sort () method to sort the list Collections.sort(cities_list); // Print the Sorted ArrayList (HashSet) System.out.println('Sorted HashSet:'+ cities_list); } }
Çıktı:
dizi kullanarak c ++ 'da yığın uygulaması
HashSet'i TreeSet'e Dönüştürerek
Bu yaklaşımı kullanarak HashSet'i TreeSet'e dönüştürüyoruz. TreeSet, öğelerin sırasını korur. Bu nedenle, HashSet TreeSet ile kaplandığında, öğeler sıraya konur.
Aşağıdaki Java programı bu dönüşümü gösterir ve böylece HashSet'i sıralar.
import java.util.*; public class Main { public static void main(String args()) { // Create and initialize a HashSet HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet:'+ cities_HashSet); // Sort HashSet using TreeSet TreeSet<String> treeSet = new TreeSet<String>(cities_HashSet); // Print the sorted HashSet System.out.println('HashSet sorted using using TreeSet:' + treeSet); } }
Çıktı:
Şimdi HashSet ve HashMap arasındaki bazı farklılıkları tartışalım. HashSet ve TreeSet arasındaki farkları da tartışacağız.
HashSet Vs HashMap
Aşağıdaki tablo HashSet ve HashMap arasındaki temel farkları gösterir.
HashSet | HashMap |
---|---|
Nesneler, Add () yöntemi kullanılarak eklenir. | HashMap, anahtar / değer çiftleri eklemek için put () yöntemini kullanır. |
Set arayüzünü uygular. | Harita arayüzünü uygular. |
Belirli bir türdeki nesneleri saklar. | Anahtar / değer çiftlerini depolayın. |
Nesnelerin yinelenen değerlerine izin vermez. | Yinelenen değerlere izin verir ancak yinelenen anahtarlara izin vermez. |
Tek bir boş değere sahip olabilir. | Tek boş anahtara ve birden çok boş değere izin verir. |
Verileri depolamak için dahili olarak HashMap Nesnesini kullanır. | Verileri depolamak için hashing tekniğini kullanır. |
HashMap ile karşılaştırıldığında daha yavaştır. | HashMap daha hızlıdır. |
HashSet ve TreeSet
Aşağıda, HashSet ve TreeSet arasındaki farklar listelenmiştir.
HashSet | Ağaç Kümesi |
---|---|
Sınırlı işlevselliğe sahiptir. | Sağlar, çeşitli işlemler sunan ve Treeset kullanımını HashSet'ten daha kolay hale getiren işlevler olabilir. |
Eleman sırasını korumaz. Nesneleri rastgele sırayla saklar. | Elementlerin doğal düzenini korur. |
Boş değerlere izin verir. | Boş değerleri olamaz. |
Temel işlemler için sabit zaman aldığından daha iyi performans verir. | Temel işlemler için oturum açma süresi maliyeti sunar. |
Treeset'ten çok daha hızlı. | Treeset daha yavaştır. |
HashMap kullanılarak dahili olarak uygulanmıştır. | Treeset, gezilebilir Treemap kullanılarak dahili olarak uygulanır. |
Karşılaştırma için equals () yöntemini kullanır. | Karşılaştırma için CompareTo () yöntemini kullanır. |
Sıkça Sorulan Sorular
S # 1) HashSet Java'da nasıl çalışır?
Cevap: Java'daki HashSet, nesneyi depolamak için HashMap kullanır. Bir HashSet nesnesi oluşturulduğunda bir HashMap nesnesi oluşturulur. HashSet'e girilen öğeler veya nesneler, HashMap'te anahtar olarak saklanır.
S # 2) HashSet Java'da mı sipariş edildi?
Cevap: Hayır, Java ile sipariş edilmemiştir. Öğeleri rastgele sırayla saklar.
S # 3) HashSet null'a izin veriyor mu?
Cevap: evet, tek bir boş değere izin verir. Bu, yalnızca tek bir öğenin veya nesnenin boş olabileceği ve tümü olamayacağı anlamına gelir.
S # 4) HashSet neden Java'da kullanılıyor?
Cevap: Java'da anahtar-değer çiftlerini depolamak için kullanılır. HashSet'in senkronize edilmemiş olması ve HashTable'dan farklı olarak null değerlere ve tek bir boş anahtara izin vermesi dışında HashTable'a benzer. HashSet sıralı değildir ve sıralanmamış nesneleri saklamak için veya nesnelerin sırası gerekmediğinde kullanılabilir.
S # 5) HashSet Java'da senkronize ediliyor mu?
Cevap: HashSet, Java'da senkronize edilmez. Ayrıca, iş parçacığı açısından güvenli değildir. Ancak senkronizedSet () yöntemini kullanarak onu senkronize edebiliriz.
Sonuç
HashSet, rastgele sıradaki nesneleri içeren bir koleksiyondur. Java'da HashSet uygulayan HashSet sınıfı, HashMap'i uygulayan HashTable'ı kullanır.
HashSet sınıfı tarafından sağlanan yöntemlerle birlikte HashSet'in bildirimini ve başlatılmasını gördük.
=> Kolay Java Eğitim Serisini Okuyun.
Önerilen Kaynaklar
- Java Double - Programlama Örnekleriyle Öğretici
- Programlama Örnekleriyle Java Float Eğitimi
- Java Reverse String: Programlama Örnekleriyle Öğretici
- TreeSet In Java: Programlama Örnekleriyle Öğretici
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi
- Java Dizesi () Örneklerle Yöntem Eğitimi içerir
- TreeMap In Java - Java TreeMap Örnekleriyle Öğretici
- Java'da Jagged Array - Örneklerle Eğitim