HashSet, LinkedHashSet, TreeSet

Kategori: Java , 13 Temmuz 2019 , JanFranco


Collection Framework üzerinden devam ediyoruz. Set ve Map arasındaki en büyük fark, Map sınıfında depolanacak değer ile bir anahtar değer birlikte gönderilirken, Set sınıfında sadece değer gönderilir. Set sınıfında veriler unique yani eşsizdir. Aynı şekilde Map sınıfında da anahtar değer yani key değer eşsizdir. Örnek üzerinden görelim, veri yapılarını implemente edelim:


Set<String> hashSet = new HashSet<String>();
Set<String> linkedHashSet = new LinkedHashSet<String>();
Set<String> treeSet = new TreeSet<String>();
Elemanlar ekleyelim:

hashSet.add("Java");
hashSet.add("Phython");
hashSet.add("C++");
hashSet.add("JavaScript");
hashSet.add("PHP");

linkedHashSet.add("Java");
linkedHashSet.add("Phython");
linkedHashSet.add("C++");
linkedHashSet.add("JavaScript");
linkedHashSet.add("PHP");

treeSet.add("Java");
treeSet.add("Phython");
treeSet.add("C++");
treeSet.add("JavaScript");
treeSet.add("PHP");
Yapıları konsola bastıralım:

System.out.println("*****HASH*****");
for(String s1 : hashSet){
	System.out.println(s1);
}

System.out.println("*****LinkedHash*****");
for(String s2 : linkedHashSet){
	System.out.println(s2);
}

System.out.println("*****TREEE*****");
for(String s3 : treeSet){
	System.out.println(s3);
}
Konsolda:

*****HASH*****
Java
C++
JavaScript
PHP
Phython
*****LinkedHash*****
Java
Phython
C++
JavaScript
PHP
*****TREEE*****
C++
Java
JavaScript
PHP
Phython
LinkedHashSet'te veriler eklenme sırasına göre yerleştirildi. TreeSet'te ise veriler alfabetik olarak yerleştirildi. Set sınıfının methodlarını inceleyelim. hashSet'te Go ve Java elemanlarını arayalım, isEmpty methodu ile veri yapısının boş olup olmadığını kontrol edelim. remove methodu ile eleman silelim:

System.out.println("*****CONTAINS*****");
System.out.println(hashSet.contains("Go"));
System.out.println(hashSet.contains("Java"));

System.out.println("*****isEmpty*****");
System.out.println(hashSet.isEmpty());

hashSet.remove("Java");
System.out.println("*****HASH*****");
for(String s1 : hashSet){
	System.out.println(s1);
}
Konsolda:

*****CONTAINS*****
false
true
*****isEmpty*****
false
*****HASH*****
C++
JavaScript
PHP
Phython
2 yeni yapı oluşturalım.

Set<String> set4 = new HashSet<String>();
Set<String> set5 = new HashSet<String>();

set4.add("Java");
set4.add("Phython");
set4.add("C++");
set4.add("JavaScript");
set4.add("PHP");

set5.add("Go");
set5.add("Java");
set5.add("CSS");
Fark ve kesişim olaylarını görelim. Ancak set4 ve set5 yapılarının bozulmaması için intersec ve diff adında iki yeni yapı daha oluşturalım.

Set<String> diff = new HashSet<String>(set5);

System.out.println("*****Difference*****");

diff.removeAll(set4);

for(String s : diff){
	System.out.println(s);
}

Set<String> intersec = new HashSet<String>(set5);

System.out.println("*****Intersection*****");

System.out.println(intersec.retainAll(set4));

for(String s : intersec){
	System.out.println(s);
}
Konsolda:

*****Difference*****
true
CSS
Go
*****Intersection*****
true
Java


Sonraki Yazı: hashCode(), equals()
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın