Java ile Map, HashMap, TreeMap ve LinkedHashMap kullanımı

Java ile Map, HashMap, TreeMap ve LinkedHashMap kullanımı

Herkese merhabalar, bu yazımızda sizlerle Java programlama dilinde Map interface yapısından ve TreeMap kullanımından bahsedeceğiz. ve örneklerle pekiştireceğiz.

Hadi başlayalım.

İlk olarak Map arayüzünden bahsedelim.
Java dilinde Map arayüzü elemanların anahtar-değer ikilileri şeklinde tutulmasını sağlayan bir yapıdır. Map arayüzü direk olarak örneklenemeyeceği için HashMap, Treemap gibi yapılar ile kullanılmaktadır.

Map arayüzünü niçin kullanırız
Map arayüzü geliştiricilere, container sınıfları içerisinden belirli bir anahtar değer ile verilere erişilmesine olanak tanır. Dictionary yapısı bu kullanıma örnektir. Elemanın index değeri yerine bilinen key ile erişimin sağlanmasında ve başka işlemlerin yapılmasında kullanışlıdır.

Tanım açıklama yapmamız gerektiğinde, id değeri ve veri tipi tutmak istediğimizde, ifade-değer ikililerinde Map sınıfları gayet kullanışlı olmaktadır.

Aşağıda Java ile Map arayüzü ve ilgili sınıfların genel özelliklerinden bahsedelim.

  • Map arayüzündeki elemanların anahtar değerleri farklı olmalıdır. Aynı anahtara sahip birden fazla eleman olamaz.
  • Map arayüzü örneklemelerinde HashMap ve LinkedHashmap nullKey ve nullValue elemanlara izin verirken, TreeMap yapısı bunlara izin vermemektedir.
  • TreeMap ve LinkedHashMap sınıflarının elemanları sıralıdır fakat HashMap sıralanmış halde değildir.
  • Map arayüzü için Map ve SortedMap arayüzleri ile birlikte HashMap, TreeMap ve LinkedHashMap sınıfları bulunmaktadır.

Şimdi her bir sınıf için bir Map örneği yapalım.

Aşağıda Map arayüzü ile HashMap, LinkedHashMap ve TreeMap nesnelerinin oluşturulması gösterilmiştir.


        Map<String, Integer> map1 = new HashMap<>();
        Map<String, String> map2 = new LinkedHashMap<>();
        Map<String, Boolean> map3 = new TreeMap<>();

Map bir interface olduğu için direk olarak nesnesi oluşturulamaz ve nesne oluşturabilmek için bir kendisini implement eden sınıfa ihtiyaç duyar.

Map ve HashMap sınıfı

HashMap sınıfı Map arayüzünü kendisine implemente eder ve verileri key-value çifti olarak saklar. Dolayısıyla elemanlarına erişmek istendiğinde key değeri bilinmelidir. HashMap sınıfının en büyük özelliği: String ifadeleri küçük sitring ifadelere dönüştürerek saklar. Yani Hash eder. Bu özellik koleksiyon içerisinde aramayı hızlandırır ve performansı arttırır.

Aşağıda HashMap sınıfının kullanımı görüntülenmektedir.


import java.util.*;

public class HashMapExample{
     public static void main(String []args){
        Map<String, String> hashMap = new HashMap<>();
        hashMap.put("name", "Burak Hamdi"); 
        hashMap.put("surname", "TUFAN"); 
        hashMap.put("web", "thecodeprogram.com");
        
        System.out.println("İsim : " + hashMap.get("name"));
        System.out.println("Soyisim : " + hashMap.get("surname"));
        System.out.println("Web : " + hashMap.get("web"));
     }
}
Program Çıktısı aşağıdaki gibi olacaktır:

İsim : Burak Hamdi
Soyisim : TUFAN
Web : thecodeprogram.com

Map ve LinkedHashMap Sınıfı

LinkedHashMap sınıfı aynı HashMap gibi çalışmaktadır. Ek olarak HashMap sınıfında olmayan sıralama özelliği vardır. LinkedHashMap elemanları eklendiği sırada tutar ve bu şekilde elemanlara erişilmesine olanak tanır.

Aşağıda Map ve LinkedHashMap kullanımı görülmektedir.


import java.util.*;

public class LinkedHashMapExample{
     public static void main(String []args){
        Map<String, String> map = new LinkedHashMap<>();
        map.put("name", "Burak Hamdi"); 
        map.put("surname", "TUFAN"); 
        map.put("web", "thecodeprogram.com");
        
        Iterator it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = (Map.Entry<String, String>)it.next();
            String key = entry.getKey();
            String value = entry.getValue();
            
            System.out.println(key + " : " + value);
        }
     }
}
Program çıktısı aşağıdaki gibi olacaktır:

name : Burak Hamdi
surname : TUFAN
web : thecodeprogram.com

Map ve TreeMap sınıfı

TreeMap sınıfı bizlere Map arayüzü ile birlikte NavigableMap abstract sınıfının kullanılabilmesini sağlar. Türetilen TreeMap sınıfı örneği, elemanlarının anahtar değerlerine göre veya örnek oluşturma esnasında yapıcı metod ile tanımlanan bir comparator aracılığı ile sıralanırlar. Bu sayede bize bağlı bir sıralama elde edilmiş olur.

Aşağıda TreeMap kullanımı örneği görülmektedir.


import java.util.*;

public class TreeMapExample{
     public static void main(String []args){
        Map<String, String> map = new TreeMap<>();
        map.put("name", "Burak Hamdi"); 
        map.put("surname", "TUFAN"); 
        map.put("web", "thecodeprogram.com");
        
        for (Map.Entry<String, String> e : map.entrySet()) 
            System.out.println(e.getKey() + " " + e.getValue()); 
     }
}
Program Çıktısı Aşağıdaki gibi olacaktır:

name Burak Hamdi
surname TUFAN
web thecodeprogram.com

Aşağıda bazı metodların kullanımı görülmektedir.

  • clear() ile bütün elemanlar temizlenir.
  • containsKey(Object) metodu ile bir eleman key değeri varmı diye arama yapılır sonuç true veya false olarak döner.
  • containsValue(Object) metodu ile bir value değer varmı diye arama yapılır ve sonuç tru veya false olarak döner.
  • get(Object) metodu ile belirtilen bir anahtarın bağlı olduğu elemanın değeri getirilir.
  • put(Object, Object) metodu ile yeni eleman eklenir.
  • remove(Object) ile Anahtarı belirtilen emelan silinir.
  • size() metodu ile kaç tane eleman olduğu bulunur.

Bu yazımızda buraya kadar.

Burak Hamdi TUFAN


Tags


Share this Post

Send with Whatsapp

Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

  • There is no comment. Be the owner of first comment...