Java ile HashSet Kullanımı
Bazı değerleri birer defa tutan değer haritalarıdır. Hashset ile nesne haritaları oluşturabiliriz. Burda aynı nesneden iki defa kullanılamaz. Mantıksal olarak çok kullanışlıdır. Genelde karşılaştırma işlemleri için kullanılır.HashMap ile çok benzer bir nesnedir. Hashset içeriğini dizi halinde tutar.Herbir anahtardan birer tane tutar. İki tane anahtar asla eşit olmaz ve iki tane olunca bulunur. Hashset nesnesini sttring elemanlarla oluştururuz. String ifadeyi tanımlarken '<>' taglarının arasına tanımlarız ve eşittir koyup new HasSet diyerek oluştururuz.
Çıkarılacak olan sonuç ise ifadenin illaki string olmasına gerek yok. Solda tanımlanan ne ise o olabilir Örneklerde genelde string kullanılır fakat aynı şekilde diğerlerindede kullanılabilir. Şimdi bununla ilgili bir örnek yapalım
import java.util.HashSet;
public class Program {
public static void main(String[] args) {
// Burda HashSet nesnemizi Oluşturduk
HashSet hash = new HashSet<>();
hash.add("The");
hash.add("Kod");
hash.add("Kod"); // Aynı nesneden iki tane ekledik denemek amaçlı
hash.add("Program");
//Nesnelerimizi ekledik
// Ve içinde kaç tane veri olduğunu gösterdik Biz 4 tane ekledik ama burda 3 tane gösterecek çünkü bir tanesi çift nesne :)
System.out.println(hash.size());
// ve burdada nesnelerin varlığını yokluğunu kontrol edelim
System.out.println(hash.contains("The"));
System.out.println(hash.contains("Kod"));
System.out.println(hash.contains("Program"));
System.out.println(hash.contains("Google"));
}
}
Program Çıktısı
3
true
true
true
false
Yukarıda gördüğümüz gibi 4 tane nesne ekledik fakat sayısını aldığımızda 3 aldık. Çünkü Kod olanı iki defa eklemiştik. Yani çiftlenmiş olan nesneleri saymadığını gördük ve öğrendik.
Boyut : Boyutu öğrenmek için size() metodunu çağırıyoruz. Bu fonksiyon bize kaç tane çiftlenmemiş nesne olduğunu getirir. Eğer boşsa sıfır olarak döner. ve IsEmpty fonksiyonu ise boyutunun sıfırmı değilmşi olduğunu kontrol eder ve eğer boşsa true döner.
Aşağıdaki örnekte boş bir HashSet oluşturalım ve kontrol ettirelim ardında ona veri ekleyip tekrar boşluk durumunu kontrol ettirelim. Hadi şimdi örneğimize geçelim
import java.util.HashSet;
public class Program {
public static void main(String[] args) {
HashSet hash = new HashSet<>(); //integer tipinde yeni bir HashSet oluşturuldu
// ve boş durumdaki anında kontrol yapıldı
System.out.println(hash.size()); // Boyutunu yazdırıyoruz
System.out.println(hash.isEmpty()); // Burdada Boş olup olmadığını kontrol ediyoruz
System.out.println(); // Bir satır boşluk bırakıyoruz
// Bir tane integer nesne ekliyoruz
hash.add(10);
System.out.println(hash.size()); //tekrar boyutunu okuyoruz
System.out.println(hash.isEmpty()); //tekrar boşluk durumunu kontrol ediyoruz
}
}
Program çıktısı
0
true
1
false
Contains Kontrolu (Varmı Yokmu?) : Contains metodunu HashSet içinde bir nesnenin varlığının kontrolü yapmak için kullanırız. Eğer o nesne varsa true; yoksa false döner.
AddAll, containsAll fonksiyonları (Hepsini Ekle, Hepsini Kapsıyormu?) : AddAll() fonksiyonunu bir ArraList nesnesinin içeriğinin tamamını HashSet objesinin içine eklemek için kullanırız. ContainsAll fonksiyonunu ise bir ArrayList nesnesinin içeriğinin tamamının HashSet içinde varsa veya yoksa diye değer döndürmesini kontrol etmek için kullanırız. Varsa true yoksa false döner.
Eğer ArrayList içinde çiftlenmiş ifadeler varsa bunlar göz ardı edilir. Görmezden gelinilir. Şimdi bunlarla ilgili bir örnek yapalım...
import java.util.ArrayList;
import java.util.HashSet;
public class Program {
public static void main(String[] args) {
// ArrayList nesnemizi oluşturduk
ArrayList liste = new ArrayList<>();
liste.add("The");
liste.add("Kod");
liste.add("Program");
// HashSet oluşturduk ve içine Yukarıda oluşturduğumuz Listemizi ekledik
HashSet hash = new HashSet<>();
hash.addAll(liste);
// Aşağıdaki nesnenin varlığını kontrol ettirdik
boolean a = hash.contains("Program");
System.out.println(a);
// Ve listenin hepsinin içeride olup olmadığını kontrol ettirdik.
boolean b = hash.containsAll(liste);
System.out.println(b);
}
}
Program Çıktısı
true
true
Burda tekli nesnenin varlığını ve listenin varlığını kontrol ettik 3. ve 4. bloktaki kontrolleri yazdırdık ekrana RetainAll (Hepsini Birleştir) : Bu birleştirme metodudur. Bir tane ArrayList nesnesini diğerine ekler. Dolayısıyla iki tane HashSet nesnemimizi birleştirip ikisini bir nesnede kullanmış oluruz.
Union (Birleştirme) :Direk örnekle anlatayım bunuda. Birtane arraylist ve birtanede HashSet olan nesnelerimin içeriğini birlleştirmekte kullandığım fonksiyondur. Burdada çiftlenmiş olan nesneler yok sayılır bir tanesi eklenir. Şimdi Örneğimize geçelim
import java.util.ArrayList;
import java.util.HashSet;
public class Program {
public static void main(String[] args) {
// ArrayList nesnemi oluşturdum ve içine nesnelerimi ekledim
ArrayList liste = new ArrayList<>();
liste.add(1);
liste.add(2);
liste.add(3);
// Hash Set oluşturup ,içinenesneler ekledim
HashSet hash = new HashSet<>();
hash.add(2);
hash.add(3);
hash.add(4);
// Kırpılacak olanları çıkarttım
hash.retainAll(list);
for (Integer value : hash) {
System.out.println(value);
}
// ve ekrana yazdırdım
}
}
Program çıktısı
2
3
Static Alan : Diğer dizi nesneleri gibi HashSet de static nesne olarak kullanılabilir.Bu bize içindeki parametreleri bir defalık kullanmamıza olanak tanır. Ciddi Uyarımdır : Yalnız bu alanda static ifadeler kullanmak hata alma riskini arttırabilir. Bu konuda dikkatli olun.
import java.util.HashSet;
public class Program {
static HashSet hash = new HashSet<>(); // Hash Set ifademizi oluşturduk
static void addMore() {
hash.add(1000);
hash.add(0);
}
//Burda statik olarak HashSeti Kullandık
public static void main(String[] args) {
hash.add(10);
hash.add(100);
// ilk olarak normal ekleme yaptık
// daha sonra static olarak ekleme yaptık
addMore();
// Static ekleme işleminii kontrol ettik
if (hash.contains(1000)) {
System.out.println(1000);
}
}
}
1000
Burak Hamdi Tufan
İyi Çalışmalar
Comments