İlginizi Çekebilir
featured
  1. Ana Sayfa
  2. Java
  3. Java LinkedHashMap Nedir?

Java LinkedHashMap Nedir?

Collections yapısının derinliklerine inerek detaylı bir rehber içeriği oluşturduğumuz bu serimizde Map yapısının ikinci konusu olan LinkedHashMap kavramını ele alarak uçsuz bucaksız bir bilgi serüvenine çıkacağız.

Bu serüvenin içerisinde Java LinkedHashMap Nedir, Özellikleri, Metotları ve Kullanım yapısı hakkında çeşitli teorik bilgileri öğreneceğiz. Daha sonra bu serüvenden elde ettiğimiz bilgiyi kullanarak temel bir uygulama örneği oluşturmayı düşünüyorum. Tabii “Collection Framework” yapısı hakkında temel bir bilgiye sahipseniz bu aşamaları oldukça rahat geçebilirsiniz. Fakat henüz “Collection” yapılarını yeni öğreniyorsanız ve temel olarak bir bilginiz yoksa zorluklar yaşayabilirsiniz. Bu durumu önlemek için sizler için hazırlamış olduğum “Java Collections Nedir” isimli rehber içeriğime emrecelen.com.tr/java-collections-nedir/ bu bağlantı adresini takip edebilirsiniz. Böylelikle LinkedHashMap konusunu daha rahat anlamlandırabilir ve öğrenebilirsiniz. 🕵🏻🎓👨🏻‍🎓👩🏻‍🎓

Java LinkedHashMap Nedir?

Java LinkedHashMap, Map arayüzünün ve Collection Framework içerisinde yer alan Hashtable ve Linked List yapısının özellikleri barındıran bir kavramdır. HashMap yapısı ile oldukça benzer olan LinkedHashMap yapısında ekstra olarak çift yönlü bağ ile verilerin birbirine bağlanması olayı vardır. Bu özelliği sayesinde de verilerin belirsiz sıralanmasını önler ve collection yapımızın öğelerine öngörülebilen bir sırada erişim sağlanabilir.

Java LinkedHashMap Nedir
Java Linked List Yapısı

Java LinkedHashMap Özellikleri

Teorik olarak bir fikir sahibi olduğumuz LinkedHashMap bilgilerini daha da güçlendirmek, detaylarını öğrenmek ve projelerimize sağladığı özellikleri keşfederek öğrenme için çıktığımız bu serüvende bir adım daha atmış olabiliriz. 🧗🏻🎓

Hazırsanız aşağıdaki maddelere bir göz atalım ve öğreneceğimiz yeni bilgiler ile LinkedHashMap kavramını keşfetmeye devam edelim. 🕵🏻‍♂️

  • İçerisindeki verileri saklamak için Linked List yapısı ile birlikte çalışır.
  • Benzerlik gösterdiği HashMap‘i genişletir ve işlemleri buna göre uygular.
  • HashMap yapısına göre donanım üzerinde nispeten daha fazla ek yük biner. Bu yüzden biraz daha yavaştır.
  • Eklenen verilerin temel sırası korunur ve uygulanacak işlemler bu sıraya göre gerçekleşir.

Java LinkedHashMap Kullanımı

Java LinkedHashMap Kullanımı diğer Collection Framework öğelerinde olduğu gibi birden fazla kurucu (constructor) metot kullanımı ve generic, non-generic yapıları ile farklı tanımlamalar oluşturularak kullanılır. Fakat bu aşamada aklımızın fazla karışmaması için tanımlama yapısını temel olarak ele alacağız.

Hazırsanız “LinkedHashMap” kullanımı için yapmamız gereken temel aşamaları maddeler üzerinde inceleyerek kullanımı hakkında fikir sahibi olalım.

  1. LinkedHashMap kavramını kullanmak için sınıfımız üzerinde “LinkedHashMap” kavramını tanıtmamız gerekiyor. Bunun içinde sınıfımız içerisinde “LinkedHashMap” yapısını import etmeliyiz.
  2. import java.util.LinkedHashMap;

  3. Daha sonra tanımlama işlemimizi gerçekleştirmek için yapımızdan bir nesne üretmemiz gerkeiyor. Tabii, bu tanımlamayı gerçekleştirirken yukarıda bahsettiğim çeşitli constructor metotlardan, generic ve non-generic tanımlama yapılardan faydalanabiliriz.
  4. ///---> LinkedHashMap Tanımlaması <---\\\
    LinkedHashMap nonGeneric = new LinkedHashMap(); // Non-Generic Tanımlama Örneği.
    LinkedHashMap <String,Integer> generic = new LinkedHashMap<>(); // Generic Tanımlama Örneği.

Java LinkedHashMap Kullanımı için gerekli olan aşamaları takip ettikten ve başarılı bir şekilde tanımlama işlemini gerçekleştirdikten sonra bazı collection metot yapılarını kullanabilir hale geleceğiz. Bu metot kavramlarını ve sahip olduğu özellikleri yeni bir bölüm altında incelemeye başlayarak serüvenimizin bir diğer adımına geçiş yapalım.🧑🏻‍🚀 👨🏻‍🚀

Java LinkedHashMap Metotları

LinkedHashMap yapısını projemizde tanımladıktan sonra bazı özel metotları ve collection framework yapısının ortak metotlarını kullanabilir hale gelmiş oluruz. Bu bahsetmiş olduğum metot yapılarını incelemek ve kullanımı hakkında bir fikir sahibi olabilmek için aşağıdaki maddeleri incelemeye başlayalım. 🔍👀

  • Put(Key,Value):Parametre olarak alınan anahtarı ve veriyi birbiri ile eşleyip yapımızın içerisine eklenmesini sağlar.
  • Remove(Key) & Remove(Key,Value): İki türlü kullanımı mümkün olan bu metot yapımızda verilen parametreler yapı içerisinde aranır ve bulunursa yapı içerisinde o veri kaldırılır.
  • Get(Key): Parametre olarak almış olduğu anahtar değerini LinkedHashMap üzerinde arar ve eğer bulunuyorsa anahtarın değerini geriye döndürür. Eğer verilen anahtar ile eşleyen bir veri yoksa null olarak geriye değer döner.
  • Equals(Value): Parametre olarak almış olduğu değeri LinkedHashMap üzerinde bir eşitliğinin olup olmadığını sorgular.
  • ContainsKey(Key) & ContainsValue(Value): Verilen anahtar veya veri değerine göre arama gerçekleştirdikten sonra eşleşme sağlanırsa true değerini döndürür.
  • KeySet(): LinkedHashMap içerisinde anahtarları bir küme şeklinde oluşturmaya yarar.
  • HashCode(): Oluşturmuş olduğumuz LinkedHashMap yapısının hash kodunu bizlere verir.
  • EntrySet(): LinkedHashMap içerisinde yer alan değerleri küme şeklinde geriye değer olarak döndürür.

Collections” kavramının içerisinde yer aldığı için metotlardan bahsederken artık alışmış olduğumuz “Clear, Clone, isEmpty” gibi diğer metot kavramlarını açıklamak istemedim. Fakat böyle metotlarında LinkedHashMap içerisinde kullanılabilir olduğunu unutmayın.

Şimdi isterseniz yukarıda bahsetmiş olduğum metot yapılarını ele alarak kod içerisinde nasıl kullanılacağı hakkında bir fikir sahibi olabilmek için basit bir kod dizisi oluşturalım ve çıktısına göz atalım. 👀

import java.util.LinkedHashMap;

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

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

        ///---> LinkedHashMap Tanımlama <---\\\
        LinkedHashMap linkedHashMap = new LinkedHashMap();

        ///---> Metotları Kullanmak İçin Öncelikle Bazı Veriler Ekleyelim <---\\\
        linkedHashMap.put("Mühendis",8000);
        linkedHashMap.put("Teknisyen", 4500);
        linkedHashMap.put("Beden İşçisi",3500);
        linkedHashMap.put("Stajyer",2500);

        ///---> Metot Kullanımları <---\\\
        System.out.print(ayrac+"\n< Java LinkedHashMap Metotları >\n"+ayrac);
        System.out.println("\n-> Verileri Görelim (entrySet Metodu): "+ linkedHashMap.entrySet());
        System.out.println("-> \"Stajyer\" Anahtarını Silelim (remove Metodu): "+ linkedHashMap.remove("Stajyer"));
        System.out.println("-> \"Stajyer\" Anahtarı ile Eşleşen Veri Kontrolü (containsKey Metodu): " + linkedHashMap.containsKey("Stajyer"));
        System.out.println("-> Yeni Veri Dizisinin Anahtarlarını Görelim: "+ linkedHashMap.keySet());
        System.out.println("-> \"Teknisyen\" Anahtarının Verisini Getirelim (get Metodu): "+ linkedHashMap.get("Teknisyen"));
        System.out.println("-> Yapının hashCode Değerini Öğrenelim (hashCode Metodu): "+ linkedHashMap.hashCode()+"\n"+ayrac);
    }
}

Kod Çıktısı:

LinkedHashMap Metotları
Java LinkedHashMap Metotları

Java LinkedHashMap Örnekleri

LinkedHashMap kavramını daha iyi aklımızda canlandırabilmek için oyunlaştırılmış basit bir örnek uygulama yapmak istiyorum. Bunun için aklıma, plaklar ve bu plakların ait olduğu illerin tahminini gerçekleştireceğimiz bir yapı oluşturmak geldi. Bu yapıyı oluşturmak için aşağıdaki adımları izledim.

  1. Öncelikle örnek yapımı oluşturmak için “Main” sınıfımın içerisine generic bir LinkedHashMap yapısı oluşturarak işlemime başladım.
  2. Daha sonra uygulamam içerisinde kullanıcıya sorulacak verilerin girişini gerçekleştirdim.
  3. Oluşturacağımız oyun yapısında kullanıcıdan veri girişlerine ihtiyacımız olduğu için “Scanner” sınıf yapısını ve alacağım verileri saklamak için çeşitli değişkenlerin tanımlamasını gerçekleştirdim.
  4. Farklı bir yol bulamadığım için eklemiş olduğum plaka kodunun son numarasını alarak basit bir while döngüsü tanımladım.
  5. Tanımlamış olduğum bu while döngüsü içerisinde kullanıcıdan belirli algoritma temelinde çıktılar vererek bazı değerleri girmesini isteyeceğim algoritma yapısını oluşturdum.

Tüm bu işlemler sonunda kod yapım aşağıdaki halini almış oldu.

import java.util.*;

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

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

        ///---> Generic LinkedHashMap Tanımlaması <---\\\
        LinkedHashMap<Integer, String> plaka = new LinkedHashMap<>();

        ///---> Bazı Veriler Ekleyelim <---\\\
        plaka.put(01, "Adana");
        plaka.put(06, "Ankara");
        plaka.put(16, "Bursa");
        plaka.put(20, "Denizli");
        plaka.put(29, "Gümüşhane");
        plaka.put(42, "Konya");
        plaka.put(58, "Sivas");

        ///---> Kullanıcıdan veri almak ve diğer gerekli değişken tanımlamaları <---\\\
        int puan = 0;
        int dogru = 0;
        int yanlis = 0;
        int ch = 0;
        int list = 0;
        String tahmin;
        Scanner scanner = new Scanner(System.in);

        System.out.println(ayrac+"\n< Java LinkedHashMap Örnekleri >\n"+ayrac);
        while(list <= 58){
            if (plaka.containsKey(list)) {
                if(ch >= 2){
                    System.out.print("-> ["+list+"] Plakası Hangi İle Aittir: ");
                    tahmin = scanner.nextLine();
                    if(plaka.get(list).equals(tahmin)){
                        puan += 100;
                        dogru += 1;
                    }
                    else{
                        yanlis += 1;
                        puan -= 50;
                    }
                    ch = 0;
                }
                else{
                    System.out.print("-> ["+plaka.get(list)+"] İli Hangi Plakaya Sahiptir: ");
                    tahmin = scanner.nextLine();

                    if(list == Integer.parseInt(tahmin)){
                        puan += 100;
                        dogru += 1;
                    }
                    else{
                        yanlis += 1;
                        puan -= 50;
                    }
                }
                ch++;
            }
            list++;
        }
        System.out.println(ayrac+"\n-> Doğru Sayısı: "+ dogru + "\n-> Yanlış Sayısı: "+ yanlis+"\n-> Toplanan Puan: "+ puan+"\n"+ayrac);
    }
}

Kod Çıktısı:

LinkedHashMap Örnekleri
Java LinkedHashMap Örnekleri

Gördüğünüz gibi oldukça zevkli, öğretici ve basit bir örnek uygulaması gerçekleştirmiş olduk. Sizlerde hayal gücünüzü kullanarak değişik örnek yapıları oluşturarak bu rehber içerisinde öğrenmiş olduğumuz bilgileri daha da sağlam hale getirebilirsiniz.

Benimle birlikte bu bilgi serüvenine çıkarak “Java LinkedHashMap Nedir” sorusuna cevap aradığınız ve bu rehber içeriğimin sonuna kadar beni yalnız bırakmayıp yanımda olduğunuz için sizlere teşekkür ederim (🙏🏻). Eğer, konuya devam etmek ve farklı kaynaklardan “LinkedHashMap” yapısını incelemek isterseniz sizlere Oracle tarafından hazırlanmış rehber içeriğini tavsiye ederim. Bahsetmiş olduğum bu rehber içeriğine buraya tıklayarak ulaşabilirsiniz.

Unutmayın, aklınıza takılan herhangi bir soru ya da konu işleyişi ile ilgili önerilerinizi veya eleştirilerinizi aşağıda bulunan yorum yap kısmından benimle iletişime geçerek dile getirebilirsiniz. 👋🏻

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