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

Java HashMap Nedir?

Collection Framework yapısının derinliklerine inerek sahip olduğu alt başlıkları öğrenmek için çıkmış olduğumuz bu serüvende başarılı bir şekilde sona gelerek “Map” başlığının son konusunu olan HashMap kavramına göz atacağız.

HashMap yapısını öğrenmeye çalışırken Java HashMap Nedir, Kullanımı, Özellikleri ve sahip olduğu Metotlar hakkında tanımlamalarda bulunarak basit bir kaç temel örnek uygulama geliştireceğiz. Tüm bu aşamalar için kendinizi hazır hissediyorsanız ilk adımımızı atarak “Java HashMap Nedir” başlığı ile teorik olarak yapımızı tanımaya çalışalım. 🕵🏻‍♀️👨🏻‍💻🎓

Java HashMap Nedir?

Java HashMap, projelerimizdeki anahtar ve değer çiftlerinden oluşan verilerimizi depolamak için kullanabileceğimiz, collection yapıları içerisinde yer alan, harita tabanlı, Map arayüzünün altında yer alan bir sınıftır. 👩🏻‍🎨 👩🏻‍💻

HashMap Nedir
Java HashMap Yapısı

HashMap, “Hashing” ismi verilen bir teknik ile girilen verileri eşleştirir. Eşleştirdiği her anahtar bir değere, her değer bir anahtara refere eder. Dolayısıyla spesifik özellikleri belirlenen bir veriyi ya da anahtarı bulmak oldukça kolaydır.

İsterseniz edindiğimiz teorik bilgi yığının biraz daha sağlamlaştırmak için HashMap yapısının özelliklerine bir göz atalım.👨🏻‍🏫👀

Java HashMap Özellikleri

Teorik olarak aklımızda canlanan HashMap yapısının sahip olduğu özellikler hakkında bir fikir sahibi olabilirsek bu edinmiş olduğumuz teorik bilgi aklımızda daha kalıcı bir yer edinir.🧠👍🏻

  • HashMap temel olarak Map arayüzünün özelliklerini barındıran somut bir sınıf yapısıdır.
  • Yapı içerisinde yinelenen key (anahtar) verilerinin eklenmesine izin verilmez. Ancak yinelenen value (değer) eklenmesine izin verir.
  • HashMap üzerinde eklenen değerlere erişmek için o yapının anahtarını bilmemiz gerekmektedir.
  • HashMap, senkronize bir yapı içerisinde bulunmamaktadır. Bu yüzden verilerin sırasına ilişkin bir garanti verilmez. Özellikle oluşan sıranın zaman içerisinde sabit kalacağını garanti etmez.

Teorik olarak öğrendiğimiz HashMap kavramının yerini sağlamlaştırdığımıza göre artık bu yapıyı, projelerimiz içerisinde nasıl kullanacağımızı öğrenebiliriz. Bu yüzden hazırsanız bir sonraki aşamamıza geçiş yaparak “HashMap Kullanımı” hakkında bir fikir sahibi olalım.👩🏻‍🏫👨🏻‍🎓

Java HashMap Kullanımı

Java HashMap Kullanımı, collection framework yapısı içerisinde yer aldığı için birden fazla constructor (kurucu) metot, Generic ve Non-Generic tanımlamaları ile birçok tanımlama şekillerine ev sahipliği yapar (👷🏻🧰). Fakat rehber içeriğinde fazla karmaşıklık oluşmasını istemediğimden dolayı bu tanımlama şekillerinden temel olarak bahsederek sizlere HashMap kullanımı hakkında bazı bilgiler vereceğim.

Kendinizi hazır hissediyorsanız “Java HashMap Kullanımı” için gerekli tanımlama adımlarına geçiş yapalım.

  1. HashMap yapısını projelerimiz içerisinde kullanabilmek için öncelikle mevcut sınıf yapımızın içerisine giriş yaparak “HashMap” kavramını import etmemiz gerekiyor.
  2. import java.util.HashMap;

  3. Proje dosyamıza import işlemini gerçekleştirdikten sonra basit bir nesne oluşturma aşamalarını takip ederek, HashMap yapısını projemize tanımlamış oluyoruz.
  4. ///---> HashMap Tanımlaması <---\\\
    HashMap nonGeneric = new HashMap(); // Non-Generic HashMap Tanımlama Örneği.
    HashMap <String,Double> generic = new HashMap<>(); // Generic HashMap Tanımlama Örneği.

Yukarıdaki tanımlama şekillerinde HashMap kavramını iki farklı yoldan tanımlayabileceğimizi gördünüz. Bu yapılara Generic ve Non-Generic yapılar denmektedir. Eğer bu kavramlar hakkında bir bilginiz yoksa konunun işleyişinde zorluk yaşamamanız için daha önce hazırlamış olduğum “Java Generic 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.

Tabii, bu bahsetmiş olduğum iki yapıya hakimseniz, tanımlama işleminden sonra proje dosyamızda kullanabileceğimiz metot yapılarını incelemek için bir sonraki aşamamıza geçiş yapabiliriz.

Java HashMap Metotları

HashMap kullanımı için gerçekleştirmiş olduğumuz tanımlama aşamalarından sonra projemizin ilgili sınıf yapısında bazı metot yapılarını kullanabilir hale gelmiş oluruz. Bu metotlardan bazıları Collection yapısından gelen temel metotlarken, bazıları da Map yapısına özel metotlardır.

Bahsetmiş olduğum bu metot yapılarından popüler olanlarını aşağıda maddeler halinde gözlemleyebilirsiniz.

  • Put(Key,Value): Parametre olarak aldığı anahtar değeri yapı içerisinde bulunmuyor ise almış olduğu değer ile anahtar yapısını eşler ve depolar.
  • Remove(Key): Parametre olarak almış olduğu anahtar değeri yapı içerisinde bulunduğu takdirde anahtar değeri ve eşleşen veriyi siler.
  • Get(Key): HashMap içerisinde parametre olarak almış olduğu anahtar değeri bulunuyorsa eşleşmiş olduğu değeri geri döndürür.
  • ContainsKey(Key) & ContainsValue(Value): HashMap içerisinde belirtilen anahtar veya değer varsa true yoksa false değerini döndüren metotlardır.
  • Clear(): HashMap içerisinde yer alan tüm verileri silmek için kullanılır.
  • EntrySet(): HashMap içerisine eklemiş olduğumuz öğeleri bir küme halinde geriye döndüren metot.
  • HashCode(): Oluşturmuş olduğumuz HashMap’in hashCode’unu bizlere döndürür.
  • KeySet(): HashMap içerisine eklemiş olduğumuz anahtarları küme halinde geriye döndürür.
  • Size(): Anahtar ve değer eşleşmelerinin toplam sayısını geriye döndürür.
  • Values(): HashMap içerisinde yer alan değerleri bir koleksiyon olarak geriye döndürür.

Sıklıkla kullanacağımız, projelerimizde yer vereceğimiz metot yapıları hakkında fikir sahibi olduğumuza göre artık bu metot yapılarının kod içerisinde nasıl kullanılacağını gözlemlemek ve bir fikir sahibi olmak için basit bir kod dizisi hazırlayabiliriz.

import java.util.HashMap;

public class Main {

    public static void main(String[] args) {

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

        ///---> HashMap Non-Generic Tanımlaması <---\\\
        HashMap hMap = new HashMap();

        ///---> HashMap Metotlarını Kullanabilmek İçin Veri Girişi Yapalım <---\\\
        hMap.put(183006029,"Ali İhsan");// HashMap üzerinde veri eşlemek için 'put' metodunu kullanırız.
        hMap.put(183006042,"Emre");
        hMap.put(183006055,"Mert");
        hMap.put(183006058,"Ömer Faruk");

        ///---> HashMap Metotlarını Kullanalım <---\\\
        System.out.println(ayrac+"\n< Java HashMap Metotları >\n"+ayrac);
        System.out.println("-> Eşlesen Veriler (entrySet): "+ hMap.entrySet()+"\n"+ayrac);
        System.out.println("-> HashMap İçerisindeki Değerlerin Sayısı (size): "+ hMap.size());
        System.out.println("-> HashMap İçerisinde get(183006055) Kullanımı: " + hMap.get(183006055));
        System.out.println("-> HashMap Üzerinde remove(183006055) Kullanımı:"+hMap.remove(183006055));
        System.out.println("-> HashMap Üzerinde containsValue(\"Mert\") Kullanımı: " + hMap.containsValue("Mert"));
        System.out.println("-> Anahtar Verileri (keySet): " + hMap.keySet());
        System.out.println("-> HashMap İçerisindeki Değerler (values): " + hMap.values());
        System.out.println("-> HashCode Değerimiz (hashCode): "+ hMap.hashCode()+"\n"+ayrac);

    }
}

Kod Çıktısı:

Java HashMap Metotları

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

Java HashMap Örnekleri

HashMap kavramını ve Collection Framework içeriklerini daha iyi kavrayabilmek için sorgulamaların ve Collection yapılarının yoğunlukla kullanıldığı temel bir uygulama geliştirmek istiyorum.

Bunun için hazırlayacağım HashMap örneği basit bir periyodik cetvel tahmin oyunu olacak. Kullanıcı daha önce eklenmiş verileri random bir şekilde karşısında görecek ve doğru tahminde bulunmaya çalışacak. Oldukça basit ve eğlenceli olan bu uygulamayı geliştirmek için ise aşağıdaki adımları izlememiz yeterli olacaktır. 👩🏻‍🏫👩🏻‍🎓

  1. Öncelikle periyodik tablo verileri tutacağım Generic bir HashMap tanımlayarak işlemime başlıyorum.
  2. Tanımlama işlemini gerçekleştirdikten sonra aklıma gelen bir kaç değerin eklemesini gerçekleştiriyorum.
  3. Bu ekleme işlemleri de bittikten sonra lazım olacak değişkenlerin ve kullanıcıdan veri almak için ihtiyaç duyacağım “Scanner” sınıfının tanımlamasını gerçekleştiriyorum.
  4. Tüm bu işlemlerden sonra basit ve eğlenceli oyunumuzun temelini atmak ve eklenen değerler uzunluğunda while döngüsünü çalıştırabilmek için öncelikle oluşturmuş olduğumuz yapıyı Set olarak aktarıyoruz ve daha sonra Iterator temellerini atıyoruz.
  5. Basit iki tanımlama adımından sonra artık yapımızın içerisinde gezebileceğimiz while döngüsünün temelini atabiliriz.
  6. While döngüsünün temelini attıktan sonra “Key” ve “Value” değerlerine ulaşabilmek için “Map.Entry” yapısından yararlandım.
  7. Bu yapı sayesinde basit bir if-else kontrol yapısı inşa ederek basit oyunumu oluşturmuş oldum.

Tüm bu işlemler sonucunda “Main” sınıf yapım aşağıdaki halini almış oldu.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.Map;

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

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

        ///---> Generic HashMap Tanımlaması <---\\\
        HashMap <String, String> periyodik = new HashMap<>();

        ///---> Örnek İçerisinde Kullanmak İçin Veri Eklemesi Yapalım <---\\\
        periyodik.put("B","Bor");
        periyodik.put("H","Hidrojen");
        periyodik.put("Au","Altın");
        periyodik.put("Ag","Gümüş");
        periyodik.put("U","Uranyum");

        ///---> Lazım Olacak Değişkenlerin ve Scanner Sınıfının Tanımlanması <---\\\
        int puan = 0, dogru = 0, yanlis = 0, degisim = 0;
        String tahmin = null , key, value;
        Scanner scanner = new Scanner(System.in);

        ///---> Oyun Yapımızı Oluşturalım <---\\\
        System.out.println(ayrac+"\n<Java HashMap Örnekleri>\n"+ayrac);
        System.out.println("-> Periyodik tablo üzerinde bulunan elementleri tahmin edin.\n"+ayrac);

        Set set = periyodik.entrySet();
        Iterator itr = set.iterator();

        while (itr.hasNext()){
            Map.Entry mEntry = (Map.Entry) itr.next();
            value = (String) mEntry.getValue();
            key = (String) mEntry.getKey();

            if(degisim < 2){
                System.out.print("-> ["+key+"] Hangi Elementin Kısaltmasıdır: ");
                tahmin = scanner.nextLine();
                if(tahmin.equals(value)){
                    puan += 100;
                    dogru += 1;
                }
                else{
                    puan -= 125;
                    yanlis -= 1;
                }
                degisim++;
            }
            else {
                System.out.print("-> ["+value+"] Elementinin Kısaltması Nedir: " );
                tahmin = scanner.nextLine();
                if(tahmin.equals(key)){
                    puan += 100;
                    dogru += 1;
                    degisim = 0;
                }
                else {
                    puan -= 125;
                    yanlis += 1;
                }
            }

        }
        System.out.println(ayrac+"\n-> Doğru Sayısı: "+ dogru+"\n-> Yanlış Sayısı: "+ yanlis +"\n-> Toplanan Puan: "+ puan+"\n"+ayrac);
    }
}

Kod Çıktısı:

HashMap Örnekleri
Java HashMap Örnekleri

Gördüğünüz gibi oldukça zevkli, öğretici ve ileride gerçekleştirebileceğimiz tarzda projenin küçük bir prototip halini geliştirmiş olduk.

Bu rehber içerisinde benimle beraber olduğunuz için ve “Java HashMap Nedir” sorusuna cevap aradığınız için sizlere sonsuz teşekkür ederim (🙏🏻). Eğer, Collection Framework içerisinde yer alan diğer yapılar hakkında daha detaylı bir bilgi öğrenmek isterseniz, sizlere bu zorlu serüvendeki ilk adım olan “Java Collections Nedir” isimli rehber içeriğime yönlendirmek isterim. İlgili içeriğe göz atmak için emrecelen.com.tr/java-collections-nedir/ bu bağlantı adresini takip etmeniz yeterli olacaktır.

Farklı bir kaynaktan “HashMap Nedir” sorusuna cevap aramak veya burada öğrendiğiniz bilgileri farklı kaynaklara göz atarak pekiştirmek isterseniz sizlere Oracle tarafından “HashMap” ile ilgili hazırlanmış rehber içeriğini tavsiye ederim. Bu bahsetmiş olduğum 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 önerilerinizi 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