Java Map Kullanımı: Anahtar-Değer İlişkili Veri Yapıları Yönetimi

Posted by

Java dilinde, Map arayüzü, anahtar-değer ilişkili veri yapılarını yönetmek için kullanılan önemli bir koleksiyon arayüzüdür. Map, Java’nın java.util paketinde bulunan bir arayüzdür ve HashMap, LinkedHashMap ve TreeMap gibi sınıflar tarafından uygulanır. Bu blog yazısında, Java’da Map arayüzünün ne olduğunu, HashMap, LinkedHashMap ve TreeMap sınıflarının nasıl kullanıldığını ve farklı senaryolarda hangi sınıfın daha verimli olduğunu örneklerle açıklayacağız.

java map kullanımı

Java Map Nedir?

Java’da Map, Collection arayüzünü genişletmeyen, anahtar-değer çiftleri şeklinde verileri saklamak için kullanılan bir arayüzdür. Her anahtar, bir değerle ilişkilendirilmektedir. Ve aynı anahtarın birden fazla kez kullanılmasına izin vermez. Map arayüzünde, anahtar-değer çiftleri sırasız bir şekilde depolanmaktadır. Özellikle anahtarlar benzersiz olmalıdır. Bu nedenle, anahtarlarla değerlere hızlı bir şekilde erişim sağlanabilmektedir.

HashMap Sınıfı Kullanımı

HashMap, Java’da Map arayüzünü uygulayan en yaygın kullanılan sınıftır. Anahtar-değer çiftlerini tablo tabanlı bir yapıda saklar ve anahtarlara göre hızlı bir şekilde erişim sağlar. HashMap kullanımı için şu adımları takip edebiliriz:

import java.util.HashMap;
import java.util.Map;

public class HashMapKullanimi {

    public static void main(String[] args) {
        // HashMap oluşturma
        Map<String, Integer> ogrenciNotlari = new HashMap<>();

        // Anahtar-değer çifti ekleme
        ogrenciNotlari.put("Ahmet", 90);
        ogrenciNotlari.put("Ayşe", 85);
        ogrenciNotlari.put("Mehmet", 75);

        // Değere anahtar üzerinden erişim
        int ahmetinNotu = ogrenciNotlari.get("Ahmet");
        System.out.println("Ahmet'in Notu: " + ahmetinNotu);

        // Değer güncelleme
        ogrenciNotlari.put("Ayşe", 95);

        // Anahtar-değer çifti silme
        ogrenciNotlari.remove("Mehmet");
    }
}

LinkedHashMap Sınıfı Kullanımı

LinkedHashMap, Java’da Map arayüzünü uygulayan sınıflardan biridir ve anahtar-değer çiftlerini ekleme sırasına göre depolar. Yani, eklenme sırasına göre sıralı bir şekilde verileri saklar. LinkedHashMap kullanımı için şu adımları takip edebiliriz:

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapKullanimi {

    public static void main(String[] args) {
        // LinkedHashMap oluşturma
        Map<String, Integer> ogrenciNotlari = new LinkedHashMap<>();

        // Anahtar-değer çifti ekleme
        ogrenciNotlari.put("Ahmet", 90);
        ogrenciNotlari.put("Ayşe", 85);
        ogrenciNotlari.put("Mehmet", 75);

        // Değere anahtar üzerinden erişim
        int ahmetinNotu = ogrenciNotlari.get("Ahmet");
        System.out.println("Ahmet'in Notu: " + ahmetinNotu);

        // Değer güncelleme
        ogrenciNotlari.put("Ayşe", 95);

        // Anahtar-değer çifti silme
        ogrenciNotlari.remove("Mehmet");
    }
}

TreeMap Sınıfı Kullanımı

TreeMap, Java’da Map arayüzünü uygulayan bir başka sınıftır ve anahtarları doğal sıraya göre sıralı bir şekilde depolar. Yani, anahtarlar Comparable veya Comparator arayüzünü uyguladığında veya özelleştirilen bir sıralama mantığı sağlandığında anahtarlar otomatik olarak sıralanmaktadır. TreeMap kullanımı için şu adımları takip edebiliriz:

import java.util.TreeMap;
import java.util.Map;

public class TreeMapKullanimi {

    public static void main(String[] args) {
        // TreeMap oluşturma
        Map<String, Integer> ogrenciNotlari = new TreeMap<>();

        // Anahtar-değer çifti ekleme
        ogrenciNotlari.put("Ahmet", 90);
        ogrenciNotlari.put("Ayşe", 85);
        ogrenciNotlari.put("Mehmet", 75);

        // Değere anahtar üzerinden erişim
        int ahmetinNotu = ogrenciNotlari.get("Ahmet");
        System.out.println("Ahmet'in Notu: " + ahmetinNotu);

        // Değer güncelleme
        ogrenciNotlari.put("Ayşe", 95);

        // Anahtar-değer çifti silme
        ogrenciNotlari.remove("Mehmet");
    }
}

HashMap vs LinkedHashMap vs TreeMap: Performans Karşılaştırması

Java HashMap, LinkedHashMap ve TreeMap arasında bazı performans farkları vardır ve kullanım senaryolarına göre tercih edilebilirler. HashMap, anahtarları tablo tabanlı bir yapıda hızlı bir şekilde saklar ve bu nedenle elemanlara hızlı erişim sağlar. LinkedHashMap, eklenme sırasına göre sıralı bir şekilde verileri saklar ve erişim hızı açısından HashMap ile benzerdir. TreeMap ise anahtarları doğal sıraya göre sıralar ve erişim hızı daha düşüktür.

Bu nedenle, verilerin sıralı bir şekilde depolanmasını istediğimiz durumlarda LinkedHashMap veya TreeMap kullanmak daha uygun olacaktır. Öte yandan, verilerin eklenme sırasına göre veya sıralama ihtiyacı olmadığında HashMap daha verimli olmaktadır.

Java Map Örnek Senaryo

Aşağıda, farklı Map sınıflarını kullanarak örnek bir senaryo göstereceğiz:

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class MapKullanimi {

    public static void main(String[] args) {
        // HashMap
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Ahmet", 90);
        hashMap.put("Ayşe", 85);
        hashMap.put("Mehmet", 75);

        System.out.println("HashMap:");
        for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }

        // LinkedHashMap
        Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("Ahmet", 90);
        linkedHashMap.put("Ayşe", 85);
        linkedHashMap.put("Mehmet", 75);

        System.out.println("LinkedHashMap:");
        for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }

        // TreeMap
        Map<String, Integer> treeMap = new TreeMap<>();
        treeMap.put("Ahmet", 90);
        treeMap.put("Ayşe", 85);
        treeMap.put("Mehmet", 75);

        System.out.println("TreeMap:");
        for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

Çıktı;

HashMap:
Mehmet -> 75
Ahmet -> 90
Ayşe -> 85
LinkedHashMap:
Ahmet -> 90
Ayşe -> 85
Mehmet -> 75
TreeMap:
Ahmet -> 90
Ayşe -> 85
Mehmet -> 75

Görüldüğü gibi, HashMap anahtarları sırasız bir şekilde sakladığı için çıktıda herhangi bir sıralama yoktur. LinkedHashMap, eklenme sırasına göre anahtarları saklayarak çıktıda eklenme sırasına uygun bir sıralama sağlar. TreeMap ise anahtarları doğal sıraya göre sıralar. Ve çıktıda alfabetik sıraya uygun bir sıralama gösterir.

Bu yazıda, Java’da Map arayüzünün ne olduğunu, HashMap, LinkedHashMap ve TreeMap sınıflarının nasıl kullanıldığını anlattık. Ayrıca performans karşılaştırması yaparak hangi sınıfın ne zaman tercih edilmesi gerektiğini örneklerle açıkladık. Map arayüzü, anahtar-değer çiftleri şeklinde verileri yönetmek için önemli bir koleksiyon arayüzüdür. HashMap, LinkedHashMap ve TreeMap, farklı veri yapılarına ve performans avantajlarına sahiptirler. Bu sebeple projenin ihtiyaçlarına göre doğru sınıfın seçilmesi önemlidir. Ayrıca java kodlarını denemek için jdoodle.com u kullanabilirsiniz.

Java List Kullanımı ve Örnekleri için Tıklayınız.

İlginizi Çekebilir

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir