Merhabalar arkadaşlar. Bu yazıda Set Implementation sınıflarından biri olan LinkedHashSet’i inceleyeceğiz. LinkedHashSet sınıfı daha önce gördüğümüz HashSet sınıfını genişleten sınıftır ve HashSet sınıfına yeni üye eklemesi yapmaz. Hemen hemen aynı özelliklere sahiptir. Elemanlarını HashSet gibi Hash tablosunda tutmaz, bunun yerine çift bağlı sistemi kullanılır. LinkedHashSet sınıfı iterasyon sırası konusunda ise bize bir garanti sunar. Elemanlar eklenme sırası baz alınarak bir sıraya oturtulur. HashSet’de ise elemanlar için bir sıralama garantisi yoktur. LinkedHashSet sınıfı 4 adet yapılandırıcıya sahiptir.

  • LinkedHashSet() : Yeni ve boş bir LinkedHashSet nesnesi üretir ve bu nesnenin başlangıç kapasitesi 16’dır, load factor’ü 0.75’dir. Load Factor’ün ne olduğuna şuradaki yazıda değinmiştik.
  • LinkedHashSet(Collection<? extends E> c) : Yeni bir LinkedHashSet nesnesini parametre olarak aldığı c nesnesinin elemanlarını kendi içine alarak oluşturur.
  • LinkedHashSet(int initialCapacity) : Load factor’ü yine 0.75 olmak üzere başlangıç kapasitesini bizim belirlediğimiz bir nesne üretir.
  • LinkedHashSet(int initialCapacity, float loadFactor) : Load factor ve başlangıç kapasitesi özelliklerini bizim belirlediğimiz LinkedHashSet nesnesi oluşturur.

LinkedHashSet sınıfı dediğim gibi HahSet sınıfını nesnelerin tutulma biçimi olarak değiştirir ve kendine ait özellik eklemez. Bu nedenle LinkedHashSet sınıfını inceleyen örnek yapmayacağız ama onun yerine ben size nesnelerin tutulma sırasına ait örnek göstermek istiyorum.

LinkedHashSetExample.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package collections;

import java.util.HashSet;
import java.util.LinkedHashSet;

/**
 *
 * @author ilkaygunel
 */
public class LinkedHashSetExample {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>();
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();

        hashSet.add("ilkay");
        hashSet.add("turgay");
        hashSet.add("mustafa");
        hashSet.add("alican");
        hashSet.add("onur");
        hashSet.add("isa");

        linkedHashSet.add("ilkay");
        linkedHashSet.add("turgay");
        linkedHashSet.add("mustafa");
        linkedHashSet.add("alican");
        linkedHashSet.add("onur");
        linkedHashSet.add("isa");

        System.out.println(hashSet);
        System.err.println("--------------");
        System.out.println(linkedHashSet);
    }
}

Bu kodu çalıştırdığımız zaman konsolda şu ekran çıktısını alacağız: [] HashSet’in ekran çıktısına baktığınızda sıralamanın kendi istediği gibi olduğunu görüyoruz fakat LinkedHashSet iterasyon için elemanların eklenme sırasını baz alır.

Bu yazıda da bu kadar arkadaşlar. Gelecek yazıda görüşene kadar sağlıcakla kalın.