İlginizi Çekebilir
JavaFX Nedir
TreeMap Nedir
  1. Ana Sayfa
  2. Java
  3. Java TreeMap Nedir?

Java TreeMap Nedir?

Collection Framework yapısının derinliklerine indiğimiz bu rehber serimizde “Map” interface yapısının altında bulunan “SortedMap” arayüzünün bir sınıfı olan TreeMap yapısını öğrenmek için uçsuz bucaksız bir serüvene çıkacağız.

Bu serüven içerisinde Java TreeMap Nedir, Özellikleri, Kullanımı ve tanımlama sonrasında kullanabileceğimiz Metotların tanımlamalarını gerçekleştirerek teorik bilgi deneyimi kazanacağız. Daha sonra edindiğimiz bu teorik bilgileri temel ve aklımızda kalacağını düşündüğüm oyunlaştırılmış bir örnek ile destekleyerek teorik bilgimizi sağlamlaştıracağız.

Konu işleyişini nasıl gerçekleştireceğimden bahsettiğime göre artık rehber içeriğimizin ilk aşaması olan “Java TreeMap Nedir” başlığı ile yapımızı tanımaya çalışalım.

Java TreeMap Nedir?

Java TreeMap, projelerimizde sahip olduğumuz anahtar (key) ve değer (value) çiftlerinden oluşan verilerimizi depolamak için kullanabileceğimiz bir sınıftır. Üzerinde arama algoritmalarının hızlı bir şekilde çalışmasından dolayı tavsiye edilen TreeMap’ler default olarak içerisindeki verileri küçükten büyüğe doğru sıralayarak saklar.🌲🔢

Java TreeMap Nedir
Java TreeMap Yapısı

Yukarıda paylaşmış olduğum görselde TreeMap yapısını anlamakta zorluk çekiyorsanız daha önce paylaşmış olduğum “Java Interface Nedir” isimli rehber içeriğime emrecelen.com.tr/java-interface-nedir/ bu bağlantı adresini takip ederek ulaşabilirsiniz. Böylelikle “TreeMap” sınıfının nasıl oluştuğunu daha iyi kavrayabilirsiniz.👨🏻‍🏫

Eğer bu konuda bir sıkıntınız yoksa ve rahatlıkla TreeMap yapısının nasıl oluştuğunu anlayabiliyorsanız rehber içeriğimizin bir sonraki aşaması olan “Java TreeMap Özellikleri” başlığına geçiş yapabiliriz.👌🏻👨🏻‍💻

Java TreeMap Özellikleri

Java TreeMap Nedir” sorusuna vermiş olduğumuz teorik bilgi ile aklımızda canlanan TreeMap yapısının sahip olduğu özellikler hakkında bir fikir sahibi olabilirsek bu edinmiş olduğumuz teorik bilgiyi aklımızda kalıcı bir yerde muhafaza edebiliriz.🧠💪🏻

  • TreeMap, senkronize bir yapı değildir.
  • İçerisinde saklamak için boş veri (value) girişine izin verir ancak bu verileri eşlemek için boş anahtar (key) değerlerine izin vermez.
  • TreeMap içerisinde eklenen öğelerin tekrarlanmasına izin vermez.
  • Java.util paketinin bir parçasıdır ve Map arayüzünde yer alan işlevleri uygular.

Çıkmış olduğumuz bu bilgi serüveninde, teorik olarak öğrendiğimiz TreeMap kavramının sahip olduğu özellikleri öğrenerek edinmiş olduğumuz bilgiyi şekillendirmiş olduk. Artık, aklımızda şekillenmeye başlayan bu kavramı projelerimiz içerisinde nasıl kullanacağımızı öğrenmek için hazırız. Bu yüzden bir sonraki aşamamız olan “TreeMap Kullanımı” başlığına geçiş yapabiliriz. 👩🏻‍🏫👨🏻‍🎓

Java TreeMap Kullanımı

Java TreeMap Kullanımı, collections framework yapısının bir parçası olduğu için birçok constructor (kurucu) metot ile birlikte Generic veya Non-Generic bir şekilde tanımlama gerçekleştirilerek çeşitli kullanım imkanlarını içinde barındıran bir yapıdır (👷🏻🧰💎). Fakat çıkmış olduğumuz bu bilgi serüveni içerisinde fazla karmaşıklık oluşmaması için bu tanımlama çeşitlerinden temel olarak bahsederek TreeMap kullanımının nasıl gerçekleşeceği hakkında bazı bilgiler vereceğim.

Tüm bu tanımlamalardan sonra kendinizi hazır hissediyorsanız “Java TreeMap Kullanımı” için gerekli uygulama adımlarına geçiş yapabiliriz.

  1. Proje dosyamızın TreeMap kavramını tanıması için öncelikle mevcut sınıf yapımızın içerisine giriş yaparak “TreeMap” kavramını import etmemiz gerekiyor. Bu import işlemini aşağıdaki tek satırlık kod parçası ile gerçekleştirebilirsiniz.
  2. import java.util.TreeMap;

  3. Daha sonra projemiz üzerinde TreeMap yapısını kullanabilmek için basit bir nesne oluşturma aşamalarını takip ederek projemizin içerisinde TreeMap yapısını tanımlamış oluyoruz.
  4. TreeMap nonGeneric = new TreeMap();
    TreeMap <String,Integer> generic = new TreeMap<>();

Yukarıdaki tanımlama şekillerinde TreeMap kavramını iki farklı şekilde tanımlayabileceğimiz gördük. Bu yapılara Non-Generic ve Generic tanımlamalar denmektedir. Eğer bu tanımlama şekilleri hakkında bir bilginiz yoksa konun işleyişinde herhangi bir zorluk yaşamanız için daha önce hazırlamış olduğum “Java Generic Yapılar Nedir” isimli rehber içeriğime emrecelen.com.tr/java-generic-nedir/ bu bağlantı adresini takip ederek ulaşabilir ve yeni bir bilgi deneyimi yaşayabilirsiniz. 👩🏻‍🏫👨🏻‍🎓

Eğer, Generic kavramlara hakimseniz, tanımlama işleminden sonra proje dosyamız üzerinde kullanabileceğimiz metot yapılarını incelemek için rehber içeriğimizin bir sonraki aşamasına geçiş yapabiliriz.

Java TreeMap Metotları

Projelerimizde TreeMap yapısını kullanmak için gerçekleştirmiş olduğumuz tanımlama aşamalarından sonra projemizin ilgili sınıf yapısında bazı metotları kullanabilir hale gelmiş oluruz. Bu metotlardan bazıları TreeMap yapısına özelken, bazıları da Collection yapısından gelen temel metotlardır.

Bahsetmiş olduğum bu metot yapılarından sıklıkla kullanacağımız ve popüler olanlarını sizler için aşağıda maddeler halinde tanımladım.

  • Put(Key,Value): Parametre olarak girilen anahtar değeri yapı içerisinde yer almıyorsa almış olduğu değer(value) ile anahtar (key) yapısını eşler ve depolamak için saklar.
  • Remove(Key): Parametre olarak girilen anahtar değerini yapı içerisinde yer alıyorsa anahtar değeri ile eşleşen veriyi ve anahtarı yapı içerisinden siler.
  • Get(Key): TreeMap içerisinde parametre olarak girilen anahtar değeri bulunuyorsa eşleştiği veriyi geriye döndürür.
  • CeilingEntry(Key) || CeilingKey(Key): Parametre olarak verilmiş olan anahtar değerine eşit ya da anahtar değerinden büyük olan en küçük değeri geriye döndürür. Eğer böyle bir yapı yoksa null değerini döndürür.
  • Comparator(): TreeMap içerisinde bulunan anahtarları sıralamak için özel koşul belirlemekte kullanılır. Eğer anahtar yapıları doğal sıralı bir şekilde yapı içerisinde bulunuyorsa null değerini döndürür.
  • EntrySet(): TreeMap üzerinde anahtarları ve değerleri bir küme halinde geriye döndürür.
  • FirstEntry() || LastEntry(): TreeMap yapısı üzerinde en küçük veya en büyük anahtar yapısına eşleşen değer ve anahtar çiftini geriye döndürür.
  • FirstKey() || LastKey():Yapı üzerinde bulunan en küçük veya en büyük anahtar değerini geriye döndüren metotdur.
  • Size(): TreeMap içerisinde yer alan anahtar ve değer çiftlerinin sayısını geriye döndürür.
  • Values(): Yapı içerisindeki değerleri bir Collection olarak geriye döndüren metotdur.
  • Clear(): TreeMap içerisinde yer alan anahtar ve değer çiftlerinin hepsini siler.

TreeMap içerisinde oldukça fazla özel metoda ev sahipliği yapmaktadır. Fakat ben sizlere sıklıkla kullanacağımız, projelerimizde yer vereceğimizi düşündüğüm popüler metotların bilgilerini yukarıdaki maddelerde verdim. Tüm bu metot içeriklerini gözlemlemek isterseniz JavatPoint isimli internet sitesinin ilgili içeriğine buraya tıklayarak ulaşabilirsiniz.

Gerekli açıklamaları yaptığımıza ve artık popüler TreeMap metotları hakkında bir fikir sahibi olduğumuza göre bu metotların kod içerisinde nasıl kullanılacağı hakkında fikir sahibi olmak için basit bir kod dizisi örneği oluşturabiliriz.

import java.util.TreeMap;

public class Main {

    public static void main(String[] args) {

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

        ///---> Non-Generic TreeMap Tanımlaması <---\\\
        TreeMap methods = new TreeMap();

        ///---> TreeMap Metotlarını Kullanmak için Veri Girişi Yapalım <---\\\
        methods.put("Cat","Kedi");
        methods.put("Dog","Köpek");
        methods.put("Bird","Kuş");
        methods.put("Giraffe","Zürafa");
        methods.put("Lion","Aslan");

        ///---> TreeMap Metotlarını Kullanmaya Başlayalım <---\\\
        System.out.println(ayrac+"\n< Java TreeMap Metotları >\n"+ayrac);
        System.out.println("-> Eşleşen Veriler (entrySet): " + methods.entrySet()+"\n-> Yapı Uzunluğu (size) : "+ methods.size()+"\n"+ayrac);
        System.out.println("-> Yapı İçerisindeki İlk Eşleşme (firstEntry): "+ methods.firstEntry());
        System.out.println("-> Yapı İçerisindeki Son Anahtar (lastKey): "+ methods.lastKey());
        System.out.println("-> \"Bird\" Anahtarını Silelim (remove): " + methods.remove("Bird"));
        System.out.println("-> Yeni Yapı Uzunluğu: "+ methods.size());
        System.out.println("-> CelingEntry(\"Bird\") Metodunu Kullanalım: " + methods.ceilingEntry("Bird"));
        System.out.println("-> Comparator Metodunun Kullanımı: " + methods.comparator()+"\n"+ayrac);
    }
}

Kod Çıktısı:

TreeMap Metotları
Java TreeMap Metotları

Metot yapılarının kullanımı hakkında bir fikir sahibi olduğumuza göre artık rehber içeriğimize başka bir boyut katacak örnek uygulama oluşturma aşamasına geçiş yapabiliriz.👨🏻‍💻👨🏻‍🏫

Java TreeMap Örnekleri

TreeMap kullanımını daha iyi kavrayabilmek için çeşitli sorgulamaların bulunduğu ve TreeMap metotlarının yoğunlukla kullanıldığı temel bir uygulama geliştirmek istiyorum.

Tabii bu geliştireceğim uygulama rehber içeriğimin başında söylediğim gibi eğlenceli, akılda kalıcı basit bir matematik oyunu oluşturacağım. Bu uygulama için izleyeceğim aşamaları aşağıdaki maddelerden takip edebilirsiniz. 🕵🏻

  1. Öncelikle “Main” sınıfının içerisinde verilerimi depolamak için “Generic” yapıya sahip bir “TreeMap” tanımlaması gerçekleştirdim.
  2. İkinci adım olarak ihtiyaç duyacağım çeşitli değişkenlerin ve “Scanner” sınıfının tanımlamasını gerçekleştirdim.
  3. Daha sonra oluşturmuş olduğum “TreeMap” yapısına veri ekleyerek oyunum için ihtiyaç duyacağım verilerin eklenmesi için basit bir for döngüsü oluşturdum.
  4. Tüm bu işlemlerden sonra oyunumun çalışmasını sağlayacak bir for döngüsü tanımladım.
  5. Son olarak bu oluşturmuş olduğum for döngüsünün içerisine çeşitli if-else kontrol yapıları oluşturdum ve oyunumu hazırladım.

Bu işlemlerden sonra yazmış olduğum kod satırlarını aşağıdaki editör üzerinde gözlemleyebilirsiniz.

import java.util.Scanner;
import java.util.TreeMap;

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

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

        ///---> Generic TreeMap Tanımlaması <---\\\
        TreeMap <Integer,Integer> mathGeneric = new TreeMap<>();

        ///---> Gerekli Değişkenler ve Scanner Sınıfının Tanımlaması <---\\\
        int puan = 0 , dogru = 0, yanlis = 0, degisim = 0, tahmin;
        Scanner scanner = new Scanner(System.in);

        ///---> Oyun Yapımız İçin Veri Girişi Tanımlayalım <---\\\
        for(int i = 1 ; i <= 10; i++)
            mathGeneric.put(i,(i*i));

        ///---> Oyunumuzun Sistemini Kuralım <---\\\
        System.out.println(ayrac+"\n< Java TreeMap Örnekleri >\n"+ayrac);
        for(int i= 1 ; i <= mathGeneric.size() ; i++){
            if(degisim <= 2 || degisim >= 4){
                if(dogru > 1  && dogru <= 2){
                    if(i==3) {
                    System.out.print("-> ["+(mathGeneric.get(i))+"] Değerin Karesi Kaçtır: ");
                    tahmin = Integer.parseInt(scanner.next());
                        if (tahmin == mathGeneric.get(i) * mathGeneric.get(i)) {
                            dogru++;
                            puan += 100;
                        } else {
                            yanlis++;
                            puan -= 100;
                        }
                    }
                }
                else if(dogru == 3 || dogru >= 5 && dogru <= 8){
                    System.out.print("-> ["+mathGeneric.lastKey()+"] Değerinin Karesi Kaçtır: " );
                    tahmin = Integer.parseInt(scanner.next());
                    if(tahmin == (mathGeneric.lastKey()*mathGeneric.lastKey())){
                        dogru++;
                        puan += 100;
                    }
                    else{
                        yanlis++;
                        puan -= 100;
                    }
                    mathGeneric.remove(mathGeneric.lastKey());
                    i -= 1;
                }
                else{
                    System.out.print("-> ["+mathGeneric.get(i)+"] Değerine Hangi Rakamın Karesi İle Ulaşılır: ");
                    tahmin = Integer.parseInt(scanner.next());
                    if(tahmin == i){
                        dogru++;
                        puan += 100;
                    }
                    else{
                        yanlis++;
                        puan -= 100;
                    }
                }
            }
            else{
                System.out.print("-> ["+mathGeneric.get(i)+"] Değerine Hangi Rakamın Karesi İle Ulaşılır: ");
                tahmin = Integer.parseInt(scanner.next());
                if(tahmin == i){
                    dogru++;
                    puan += 100;
                }
                else{
                    yanlis++;
                    puan -= 100;
                }
            }
            degisim++;
            if(degisim > 6){
                degisim = 0;
            }
        }
        System.out.println(ayrac+"\n-> Doğru Sayısı: "+ dogru+"\n-> Yanlış Sayısı: " + yanlis + "\n-> Puanınız: "+puan+"\n"+ayrac);      
    }
}

Kod Çıktısı:

Java TreeMap Örnekleri

Gördüğünüz gibi oldukça zevkli, öğretici ve eğlenceli bir oyun yapısı oluşturmuş olduk. Böylelikle rehber içeriğinde edindiğimiz teorik bilgileri pratiğe dökerek bir deneyim kazanmış olduk.👌🏻

Eğer “Java TreeMap Nedir” sorusuna farklı kaynaklardan da göz atmak isterseniz sizlere Oracle tarafından hazırlanmış rehber içeriği tavsiye ederim. Bahsetmiş olduğum rehber içeriğine buraya tıklayarak ulaşabilirsiniz.

Unutmayın, aklınıza takılan, konu ile alakalı önerileriniz ya da eleştirilerinizi 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