Java Collections(Koleksiyonlar) #1 Set-HashSet-LinkedHashSet

Merhaba arkadaşlar bugün javada önemli bir konu olan koleksiyonları anlatmaya çalışacağım.Koleksiyonlar bize bazı veri yapılarını hazır olarak sunar,o yüzden bizim tekrar yazmamıza gerek kalmaz..Ve koleksiyonları iyi bilirsek genelde yapmak istediğimiz veri yapılarının burda mevcut olduğunu görürüz..Bazı durumlarda da ufak düzenlemeler ile projelerimizde kullanırız..Şimdi genel olarak 3 temel tip olan set,liste ve map arabirimlerini(interface)  anlatmaya çalışacağım.Kısaca şöyle açıklayayım..Daha sonra ayrıntıya ineceğim:

1.Set:Aynı veriyi eklememize izin vermediği veri yapılarıdır.Yani örneğin set koleksiyonuna “Elma” diye bir veri ekledikten sonra tekrar “Elma” nesnesini ekleyemeyiz.Bu da  birbirinin kopyası verilerin olmasını istemediğimiz zamanlarda gayet kullanışlıdır.Set interface inden türeyen hashSet,linkedHashset ve TreeSet sınıfları mevcuttur.LinkedHashSet dışında elemanlar sıralı olacağı garantisini vermez.Yani ilk eklenen eleman,koleksiyonda ilk sırada bulunmayabilir.

2.List: Verileri sıralı olarak tutmamıza yarar ve aynı değerleri içerebilir.Yani “Elma” verisini list koleksiyonuna eklerseniz  ilk eleman olur,ikinci defa “Elma” verisini eklerseniz bu da 2.eleman olur.Verilerin eklenme sırasına göre tutulması istenen ve aynı olmasının  sorun olmayacağı projelerde kullanılabilir.List sınıfından Arraylist ve Linked list sınıfları türemiştir.

 

3.Map:Verilerin anahtar-değer ilişkisi şeklinde tutulduğu koleksiyon tipleridir.Örneğin bir fiyat listesini barındıran koleksiyon oluşturdunuz.Elma anahtarına 5 ilişkisini yerleştirdiğinizde Elma verisini her çağırdığınızda 5 döner.Fakat Elma adında yeni bir anahtar  oluşturamayız.Her anahtar benzersiz olmalı yani..Benzersiz şekilde anahtar değer ilişkisi olan projelerde kullanılabilecek bir veri yapısıdır..Map interface inden linkedHashmap ve TreeMap  sınıfları türemiştir.

 

Şimdi öncelikle Set arabiriminden(interface inden) türeyen sınıfları inceleyelim.

HashSet:Verileri  hashleme yöntemiyle bir kümede tutar..Veriler eklendiği sırayla kümeden çekileceği garanti değildir..Yani önce “Elma”,sonra “Armut” verisini ekledikten sonra hashset içinde dolaşırken önce “Armut” ,sonra “Elma” gelebilir.O yüzden sıranın önemli olmadığı durumlarda kullanılmalıdır..(Benim denemelerimde sıralı olarak gösterse de işi riske atmamak gerekiyor,java dokümantasyonunda da sıranın garanti olmayacağı yazıyor..Belki threadlerle  kullanılırken sıralı gelmiyordur..)

Örnek HashSet komutu:


import java.util.HashSet;

public class HashSetOrnek {

    public static void main(String[] args) {
        HashSet<String> kume = new HashSet<String>();
        kume.add("Ridvan");
        kume.add("Orhan");
        kume.add("Seyhmus");

        System.out.println("Küme Elemanlari : ");
        for (String string : kume) {
            System.out.println(string);
        }

    }

}

b)LinkedHashMap: HashMap ile aynı fonksiyonlara sahiptir.Tek farkı verileri eklenme sırasına göre tutar.Eğer sıra önemli değilse HashMap in kullanılması daha az maliyetlidir.Çünkü LinkedHashMap verileri sıraladığı için ek zaman harcar..

Örnek LinkedHashMap kodu:


import java.util.LinkedHashSet;

public class LinkedHashSetOrnek {

public static void main(String[] args) {
LinkedHashSet<String> kume = new LinkedHashSet<String>();
kume.add("Ridvan");
kume.add("Orhan");
kume.add("Seyhmus");

System.out.println("Küme Elemanlari : ");
for (String string : kume) {
System.out.println(string);
}

}

}

 

 

Bir Cevap Yazın

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