07/08/2015 14

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.

Şimdi Örneğimize Geçelim  

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);
	}
    }
}
Program çıktısı

1000

Burak Hamdi Tufan

İyi Çalışmalar


Tags

Share this Post



Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

    There is no comment. Be the owner of first comment...