Map fonksiyon denilen bir kavram var. Elinde bir isim olduğunu düşün, bu isim senin için birşeyler ifade ediyor. Yani ismi verdiğin zaman karşılığında bir sınıf alman gerekiyor. Sınıfdan kasıt herhangi birşey olabilir. En güzel örneklerden birisi sözlük. ING-TUR örneği üzerinden gidelim. Ingilizce bir kelime aslında sana Türkçe bir kelimeyi ifade ediyor. Yani "hello" -> "selam" gibi. Normal programlama terimlerinden bakarsak aslında sen "hello" kelimesini "selam" kelimesine eşliyor(mapliyorsun). Sonra "hello" kelimesini çağırdığında sana "selam" gelmesi lazım. Bunun için programlama dillerinde map fonksiyon var. Java'da direk karşılığı Map interface (arayüz). Kullanımı nasıl. map.put("hello","selam) diyerek ekliyorsun. Sonra map.get("hello") dediğin zaman "selam" kelimesini geri alıyorsun.
Map tanımlanmış bir arayüz. Belirli metodları var. Peki map fonksiyonu hafıza üzerinde nasıl tutulmalı? Programcı olarak soru bu. Bu fonksiyonun tutulması için Hash yapısı veya Tree yapısı kullanırsak özellikle get metodu çalıştırılırken performans iyi olacak. Bunların haricinde tabiki dizi ya da bağlı liste (linked-list) kullanılabilir. Ama uygulama çalışırken performans sorunları yaşanacak. İşte tam bu aşamada java standard olarak bize Map arayüzünün gerçekleştirimlerini veriyor. HashMap dediğin hafızada Hash yapısı üzerinden yazılmış bir Map sınıfı. Ayrıca TreeMap ve LinkedHashMap versiyonları da var. Onların aralarındaki farklar ayrıca değerlendirilebilir. Ama temel olarak sorunun cevabı. HashMap, Map arayüzünün gerçekleştirimini Hash ile yapan bir sınıftır. Programcılar kullanımda Map kullanmak istiyor ama hafızada Hash olarak tutulmasını istiyorsa Map m = new HashMap kullanıyor.
İyi çalışmalar,