İlginizi Çekebilir
Java TreeSet Kullanımı
  1. Ana Sayfa
  2. Java
  3. Java TreeSet Nedir?

Java TreeSet Nedir?

Java Collections Framework yapısının derinliklerine inmek ve alt başlıkları öğrenmek için çıktığımız bu serüvende “Collection” başlığının son konusu olan TreeSet kavramını öğrenmeye çalışacağız.

Öğrenmeye çalışırken Java TreeSet Nedir, Özellikleri, Kullanımı ve içerisindeki Metotların tanımlamalarını gerçekleştirerek teorik bir bilgi deneyimi kazanacağız. Daha sonra kazanmış olduğumuz bu teorik bilgiyi temel bir örnek ile destekleyerek uygulamaya dökeceğiz. Hazırsanız “Java TreeSet Nedir” başlığı ile yapımızı tanımaya çalışalım. 🕵🏻‍♂️🏻‍💻🎓

Java TreeSet Nedir?

Java TreeSet, Collection içerisinde yer alan SortedSet interface yapısının içerisinde yer alan bir kavramdır. İçerisinde benzersiz özelliklere sahip değerleri korur, bu değerleri hiyerarşik bir sıralama sistemine göre saklayan, NavigableSet interface yapısına göre hareket eden çeşitli collection özelliklerine ev sahipliği yapan bir sınıf sistemidir. 🌲🔢

Java TreeSet Nedir
Java TreeSet Yapısı

Java TreeSet Özellikleri

Teorik olarak tanımaya çalıştığımız TreeSet kavramının sahip olduğu özellikleri, maddeler halinde oluşturarak teorik bilgimizin temellerini güçlendirmeye çalışalım.

  • SortedSet yapısına bağlıdır, bu yüzden tekrarlanan öğelere izin vermez.
  • TreeSet, verilerin eklenme sırasını korumaz, fakat TreeSet yapısındaki doğal sıralamaya göre sıralanır.
  • TreeSet nesnesini tanımlarken özel bir karşılaştırıcı kullanabiliriz.
  • Daha büyük miktardaki bilgileri depolamak için kullanılır. Bu durum verilerin daha hızlı ve kolay bir şekilde erişmemize imkan verir.

Java TreeSet Kullanımı

Java TreeSet Kullanımı, collection çatısı altında yer aldığı için birden fazla constructor metot tanımlamaları ile farklı kullanım şekillerine ev sahipliği yapar. (👷🏻🧰) Fakat bu rehber içeriğimizde temel hatlardan ilerleyeceğimiz için tam anlamıyla bu yapıların üzerinde durmadan temel tanımlama şekilleri göstermeye çalışacağım.

İsterseniz TreeSet kullanımının temel tanımlama adımlarını aşağıdaki maddeler üzerinde inceleyerek uygulamaya başlayalım.

  1. TreeSet yapısını projelerimizde kullanabilmek için sınıf yapımızın içerisinde “TreeSet” yapısını import etmemiz gerekiyor.
  2. import java.util.TreeSet;

  3. Daha sonra yapımızdan bir nesne oluşturarak TreeSet yapısını projemize tanımlıyoruz.
    TreeSet nonTree = new TreeSet(); ///---> Non-Generic tanımlama Örneği <---\\\
    TreeSet <String> genericTree = new TreeSet<>(); ///---> Generic tanımlama Örneği <---\\\

Yukarıdaki tanımlamamda hem Generic hem de Non-Generic şekilde yapılar oluşturdum. Eğer bu kavramları bilmiyorsanız konunun devamında sıkıntı çekmemek için daha önce paylaşmış olduğum “Java Generic Nedir” isimli içeriğime emrecelen.com.tr/java-generic-nedir/ bu bağlantıyı takip ederek ulaşabilir ve yeni bir bilgi serüvenine giriş yapabilirsiniz.

Generic kavramına hakimseniz, tanımlama işlemimizden sonra sınıf yapımızda kullanabileceğimiz collection metot yapılarını inceleyebilir ve ne işe yaradıklarını öğrenmeye başlayabiliriz. 👨🏻‍🏫🔍👀

Java TreeSet Metotları

Proje dosyamızın sınıfı ile TreeSet kavramını tanıştırdıktan ve gerekli tanımlama işlemlerini gerçekleştirdikten sonra bazı metot yapılarını kullanabilir hale gelmiş oluruz. Bu metotlar Collection yapısından gelen temel metotlardır. Bahsetmiş olduğu metotlar şu şekildedir:

  • Add(Parametre): Parametre olarak verilen değerin eklemesini gerçekleştirir. Fakat, parametre olarak verilen değer daha önce “TreeSet” yapısı içinde bulunuyorsa, o değer tekrar eklenmez.
  • Remove(Parametre): TreeSet yapısı içerisinde parametre olarak alınan değer bulunuyorsa o veriyi siler.
  • Contains(Parametre): Parametre olarak alınan değeri küme içerisinde bulunuyorsa true, bulunmuyorsa false olarak değer döndürür.
  • Ceiling(Parametre): Kümedeki belirtilen öğeye eşit olan değeri veya daha büyük olan son öğeyi verir.
  • Comparator(): Küme içerisinde sıralama yapılacak comparator verilir. Ancak kümede doğal sıra varsa, metot geriye null değeri döndürür.
  • Clear(): TreeSet yapımıza tanımlamış olduğumuz bütün değerleri siler.
  • Clone(): Küme içerisinde bulunan değerlerin bir kopyasını oluşturur.
  • Size(): TreeSet yapısı içerisinde bulunan öğe sayısını geriye döndürür.
  • IsEmpty(): Küme içerisindeki verileri kontrol etmek için kullanılır. Eğer, küme içeriği boş ise true değilse false değerini döndürür.
  • Iterator(): Eklemiş olduğumuz değerlerin üzerinde bir tekrarlayıcı döndürmek için kullanılır.

Standart olarak tanımlanan Collection metot yapılarını daha yakından görebilmek için basit bir konsol tanımlaması oluşturarak metot yapılarının çalışmasını inceleyelim.

  1. TreeSet yapısının içerisinde bulunan metot yapılarını kullanabilmek için “Main” sınıfının içerisine Non-Generic bir tanımlama gerçekleştirdik.
  2. Nesne yapımı oluşturduktan sonra metot yapılarımı düzgün kullanabilmek için bazı değerlerin eklemesini gerçekleştirdim.
  3. Daha sonra eklemiş olduğum bu verileri kullanarak yukarıda bahsetmiş olduğumuz Collection metotlarını kullandım.
  4. Her metot kullanımının sonucunu gözlemleyebilmek için konsol üzerinde basit bir ekran çıktısı oluşturacak gerekli tanımlamaları yaparak yapımı sonlandırdım.

Yukarıdaki adımları izleyerek oluşturmuş olduğum kod içeriğini aşağıda inceleyebilirsiniz.

import java.util.TreeSet;

public class Main {
    public static void main(String[] args) {

        ///---> Değişken Tanımlaması <---\\\
        String ayrac = new String(new char[15]).replace("\0","-");

        ///---> TreeSet Yapısını Tanımlayalım <---\\\
        TreeSet set = new TreeSet();

        ///---> Metotları Kullanmak İçin Bazı Değerler Ekleyelim <---\\\
        set.add(26);
        set.add(12);
        set.add(23);
        set.add(11);

        ///---> Ekrana Yazdırarak Metotları Kullanalım <---\\\
        System.out.print(ayrac+"\n< TreeSet Metotları >\n"+ayrac);
        System.out.print("\n-> Kuyruk İçerisindeki Değerler: ");
        set.forEach(item -> System.out.print("["+item+"]"));
        System.out.print("\n"+ayrac+"\n-> Remove(23) Metot Kullanımı: "+ set.remove(23));
        System.out.println("\n-> Contains(23) Metot Kullanımı: "+ set.contains(23));
        System.out.println("-> Ceiling(23) Metot Kullanımı: "+ set.ceiling(23));
        System.out.println("-> Size() Metot Kullanımı: "+ set.size());
        set.clear();
        System.out.println("-> Clear() Metodun Kullanımı Sonucunda isEmpty(): "+ set.isEmpty()+"\n"+ayrac);
      
    }
}

Kod Çıktısı:

Java TreeSet Örnekleri
Java TreeSet Metotları

Kullanılabilir metot yapılarının çalışma şekilleri hakkında bir fikir sahibi olduğumuza göre artık biraz daha konumuzu detaylandırarak bir örnek uygulama oluşturabiliriz. 👷🏻‍♂️👨🏻‍💻

Java TreeSet Örnekleri

TreeSet yapısını daha iyi anlayabilmemiz için ve Collection yapısının sahip olduğu metotların farklı kullanım şekillerini görmek ve öğrenmek için basit bir örnek oluşturmak istiyorum.

Bu oluşturacağım örnek yapısının adımlarını aşağıda takip edebilir ve yazmış olduğum kod satırlarını inceleyebilirsiniz.

  1. Hayali olarak oluşturduğum bir dershane sisteminde öğrencilerin almış oldukları notları ve ortalamalarını belirli bir koşul doğrultusunda, sıralayarak ekranımıza gösterecek bir uygulama yapmak istiyorum. Bu özel listeleme yapısını oluşturabilmek için “AvgDetails” isminde bir sınıf oluşturdum.
  2. Oluşturmuş olduğum bu sınıf yapısında özel bir sıralama kullanmak istediğim için Comparable yapısının implement ettim.
  3. Daha sonra değişkenlerimi, kurucu (constructor) metot yapımı ve implementasyon sonucu yazmam gereken “compareTo” metot yapımı oluşturdum.
  4. Bu işlemlerden sonra “AvgDetails” ismindeki sınıf yapım aşağıdaki halini almış oldu.

    public class AvgDetails  implements  Comparable <AvgDetails>{
        private int no,firstEx,lastEx;
        private double avg;
    
        public AvgDetails(int no, int firstEx, int lastEx){
            this.no = no;
            this.firstEx = firstEx;
            this.lastEx = lastEx;
            avg = (firstEx * 0.4) + (lastEx * 0.6);
        }
    
        public String toString(){
            return "["+no +"]\t\t\t\t"+firstEx+"\t\t\t\t"+lastEx+"\t\t\t\t"+avg;
        }
        @Override
        public int compareTo(AvgDetails o) {
            if(o.avg == 80)
                return 0;
            else if(o.avg > 80)
                return 1;
            else
                return -1;
        }
    }
    
  5. Bu sınıf yapımı kullanmak ve gerekli verilerin eklenmesini sağlamak için “Main” sınıf yapıma giderek “AvgDetails” ismindeki sınıfımdan nesneler ürettim.
  6. Daha sonra üretmiş olduğum bu nesneleri TreeSet yapısına ekleyebilmek için Generic bir tanımlama gerçekleştiriyorum ve oluşturmuş olduğum nesnelerin eklemesini gerçekleştiriyorum.
  7. Yapım içerisindeki verileri ekrana yazdırabilmek ve içerisinde dolaşabilmek için bir iterator yapısı oluşturuyorum.
  8. Son olarak oluşturmuş olduğum iterator yapısını kullanarak değerleri ekrana yazdırmak için bir while döngüsü kuruyorum ve projemi çalıştırıyorum.
  9. Bu işlemlerden sonra “Main” sınıfımın içeriği aşağıdaki halini almış oldu.

    import java.util.Iterator;
    import java.util.TreeSet;
    
    public class Main {
    
        public static void main(String[] args) {
    
            ///---> Değişken Tanımlaması <---\\\
            String ayrac = new String(new char[15]).replace("\0","-");
    
            ///---> Not Bilgilerini Ekleyelim <---\\\
            AvgDetails ogr1 = new AvgDetails(254236,60,80);
            AvgDetails ogr2 = new AvgDetails(254258,30,70);
            AvgDetails ogr3 = new AvgDetails(254242,85,95);
            AvgDetails ogr4 = new AvgDetails(254255,55,71);
    
            ///---> TreeSet Tanımlaması ve Verilerin Eklenemsi<---\\\
            TreeSet <AvgDetails> tree = new TreeSet<>();
            tree.add(ogr1);
            tree.add(ogr2);
            tree.add(ogr3);
            tree.add(ogr4);
    
            ///---> Eklemiş Olduğumuz Verileri Ekrana Yazdıralım <---\\\
            System.out.println("[Öğrenci Numarası]\t\t[İlk Sınav]\t\t[İkinci Sınav]\t[Ortalaması]");
            Iterator iterator = tree.iterator();
            while (iterator.hasNext()){
                System.out.println(iterator.next());
            }
        }
    }
    

    Kod Çıktısı:

    Java TreeSet Kullanımı
    Java TreeSet Örnekleri

Bu oluşturmuş olduğumuz örnek içerisinde “AvgDetails” nesne yapılarını kullanarak TreeSet yapımıza veriler ekledik. Eklemiş olduğumuz bu verilerin belirli bir standart içerisinde sıralanmasını sağlamak için Comparable yapısını kullandım. Böylelikle öğrencilerin not ortalamalarına göre bir sıralanma gerçekleşti.

Java TreeSet Nedir” sorusuna benimle cevap aradığınız ve bu serüvende bana yoldaş olduğunuz için sizlere sonsuz teşekkür ederim. Eğer Collection yapıları hakkında daha detaylı bir bilgi öğrenmek isterseniz daha önce yazmış olduğum “Java Collections Nedir” isimli içeriğime emrecelen.com.tr/java-collections-nedir/ bu bağlantıyı takip ederek ulaşabilir veya Oracle tarafından hazırlanmış “TreeSet” rehber içeriğine buraya tıklayarak ulaşabilirsiniz.

Unutmayın, aklınıza takılan herhangi bir soruyu ya da konu işleyişi ile ilgili önerileriniz aşağıda yer alan yorum yap kısmından bana iletebilirsiniz. 👋🏻

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap