"Enter"a basıp içeriğe geçin

Set Interface

Set İnterface’i, List interface’i gibi Collection interface’inden türemiştir. Set interface’ini diğer veri yapılarından ayıran en önemli özellik, içinde tekrarlanan eleman bulunmamasıdır. Yani her elemandan sadece 1 tane vardır.

Set Interface’i, HashSet, LinkedHashSet ve TreeSet olmak üzere 3 sınıfa ayrılır.

Hashset sınıfında veriler belli bir hash fonksiyonuna göre değerler alır ve hafızada bu değerlere göre tutulur. Aynı hash değerine sahip birden çok eleman olabilir. Böylece biz bir eleman arayacağımız zaman tüm elemanların arasından değil de, sadece hash değeri aradığımız eleman ile aynı olan elemanlar arasından ararız. Bu da arama hızını ciddi şekilde artırmaktadır. Doğal olarak elemanlar ekleme sırasına göre depolanmazlar.

LinkedHashset ise verileri ekleme sırasına göre tutar. Yani Linked Hash Set veri tipinde ekleme sırası korunur. Bu da extra maliyet olarak bize döner. Ancak eğer verilerin sıralı tutulması gerekiyorsa linkedhashset kullanmak zorunda kalırız.

Treeset sınıfında ise elemanlar bir binary tree üzerinde sıralı bir şekilde tutulur (Sayılar için küçükten büyüğe, String ve Char için alfabetik sırayla).

HashSet sınıfında arama ve ekleme-çıkarma işlemi o(1) zaman alır.
Tree set sınıfında arama ve ekleme-çıkarma işlemi o(log(n)) zaman alır.

LinkedHashSet sınıfında arama ve ekleme-çıkarma işlemi o(1) zaman alır.Ama hashset’ten biraz daha fazladır.

Üç veri tipi için de fonksiyon isimleri aynıdır. Ama çalışma şekilleri farklılık gösterebilir.

Sonuç olarak, eklemiğimiz verilerin unique olmasını, yani her veriden sadece 1 adet bulunmasını istiyorsat Set kullanırız.

Değerler sıralı bir şekilde eklenirse treeset en hızlı, karışık veya tersten sıralı eklenirse en yavaş çalışacaktır. Karışık değerlerde en hızlı hashset’tir

Görüldüğü gibi, HashSet’te tamamen rastgele (aslında Hash kodlarının sırasına göre) tutulur. Linked Hash Set ekleme sırasına göre, Tree Set ise sözlük sırasına göre tutar.

FonksiyonlarTanım
add(element)Eleman ekler
addAll(collection)Bir koleksiyonun tüm elemanlarını ekler
clear()Tüm elemanları siler
contains(element)Elemanın olup olmadığına bakar.
containsAll(collection)Yollanan koleksiyondaki tüm elemanları içerip içermediğine bakar
hashCode()Hash kodu döndürür.
isEmpty()Set’in boş olup olmadığına bakar.
iterator()İlk elemanı gösteren bir iterator oluşturur.
remove(element)Girilen elemanı Set’ten siler.
removeAll(collection)Yollanan koleksiyondaki tüm ögeleri setten siler.
retainAll(collection)Girilen koleksiyondaki elemanlar dışında tüm elemanları siler.
size()Set’in eleman sayısını döndürür.
toArray()Girilen seti diziye çevirir.

 

 

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir