A Java HashMap osztálya lehetővé teszi az adatok kulcs-érték párokban történő mentését. Ez nemcsak megkönnyíti a lista lekérését és kezelését, hanem számos hozzáférési lehetőséget is biztosít. Itt áttekintjük a legfontosabb módszereket.

Mik azok a HashMap-ek Java-ban?

Az adatok tárolására és lekérésére számos módszer létezik. Az, hogy melyik tárolási módszer a legalkalmasabb, attól függ, hogy hogyan kívánja felhasználni az adatokat. Sok esetben a Java HashMap osztály valószínűleg a legjobb megoldás. Más módszerekkel ellentétben ez az osztály az adatokat kulcs-érték párokként tárolja. Ez azt jelenti, hogy minden kulcshoz pontosan egy érték van rendelve. Ha egy értéket szeretne lekérni, a megfelelő kulccsal megkaphatja a kívánt eredményt. A kulcsok és értékek teljesen különböző adattípusokból állhatnak, beleértve karakterláncokat, számokat vagy más objektumokat.

A Java HashMap osztály számos előnyt kínál. Az első az, hogy gyors keresést végezhet a programozási nyelven belül. A kulcs-érték megközelítés biztosítja azt is, hogy egy kulcshoz ne rendeljenek több értéket, így elkerülve az ismétlődéseket. Ugyanakkor ugyanazt az objektumot többször is hozzáadhatja különböző kulcsokkal. Ez a típusú tárolási és keresési funkció pozitív hatással van a teljesítményre, összehasonlítva a merev listákkal, amelyek lényegesen kevésbé rugalmasak. Ez egyben a kulcs-érték tárolók egyik fő előnye is, amelyek ugyanazt az elvet alkalmazzák. A következő szakaszokban bemutatjuk, hogyan lehet Java HashMap-eket létrehozni és használni.

Hogyan lehet HashMap-eket létrehozni és használni Java-ban

Ahhoz, hogy új HashMap-et hozzon létre Java-ban, először importálnia kell az osztályt. Ehhez használja a Java import parancsot. A kód így néz ki:

import java.util.HashMap;
HashMap<String, String> nameOfTheHashMap = new HashMap<String, String> ();
java

A két adattípus, amelyeket vessző választ el egymástól (ebben az esetben String, String), a kulcs és az érték.

Új HashMap létrehozása

A Java HashMaps működésének jobb megértése érdekében egy egyszerű példát hoztunk. Példánkban van egy ügyféllista, amelyet egy vállalat tárolni szeretne, és amelyhez bármikor hozzá szeretne férni. A lista tartalmazza az egyes ügyfelek nevét és egyedi ügyfélszámát. Bár az ügyfélszám (a példánkban a kulcs) mindig egyedi, előfordulhat, hogy több ügyfélnek is ugyanaz a neve. Mindegyik ügyfélnek azonban megvan a saját egyedi száma. Ez a szám egész szám adattípusként, a nevek pedig karakterláncként vannak rögzítve. Így állíthatjuk be ezt a Java HashMap-ban:

import java.util.HashMap;
public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	}
}
java

Elemek hozzáadása

Most már megvan a Java HashMap, de még üres. Új kulcs-érték párok hozzáadásához a put() metódust fogjuk használni. Így működik:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList);
	}
}
java

A System.out.println parancsot használjuk az ügyfél listánk megjelenítéséhez. A kimenetnek így kell kinéznie:

{1077=Jerry Mowry, 15312=Peter Smith, 73329=Maria Grosso}
java

Elemek lekérése

Most létrehoztunk egy ügyféllistát, amely számos bejegyzést tartalmazhat. Azt is szeretnénk, hogy minden egyes ügyfélbejegyzéshez külön-külön hozzáférhessünk. Ehhez átadjuk a kulcsot a get() metódusnak. Íme egy példa arra, hogyan működik ez:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.get(1077));
	}
}
java

Csak a „Jerry Mowry” név jelenjen meg.

Bejegyzések törlése

Ha egy bejegyzést szeretne eltávolítani, használja a remove() módszert. Íme egy példa a módszer használatára:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	customerList.remove(1077);
	System.out.println(customerList);
	}
}
java

A kimenet most így néz ki:

{15312=Peter Smith, 73329=Maria Grosso}
java

Egy másik lehetőség az egész lista törlése. Ehhez használja a clear() módszert.

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	customerList.clear();
	System.out.println(customerList);
	}
}
java

Most az egyetlen kimenet, amit kapunk, a következő:

{ }
java

Hogyan lehet meghatározni a bejegyzések számát?

Bár a Java HashMap meglehetősen egyszerű, ezt az osztályt nagyobb, összetettebb projektek kezelésére is használhatja. Nagyobb projektek esetén érdemes meghatározni a bejegyzések pontos számát. Végül is ez az Ön teljes ügyfélkörét jelenti. Ehhez használhatja size(). Az eljárás a következő:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.size());
	}
}
java

Példánkban a 3-as szám jelenik meg.

Hogyan lehet csak a kulcsokat vagy az értékeket megjeleníteni?

A for-each ciklussal olyan listát is létrehozhat, amely csak a kulcsokat vagy csak az értékeket tartalmazza. A kulcsok lekéréséhez használja a keySet() metódust, az értékek lekéréséhez pedig a values() metódust. A következő kódpéldában values() használjuk:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	for (String i : customerList.values()) {
		System.out.println(i);
		}
	}
}
java

A kimenet:

Jerry Mowry
Peter Smith
Maria Grosso
java

HashMap ellenőrzése, hogy tartalmaz-e egy adott értéket vagy kulcsot

Egy adott bejegyzés elérésén túl azt is ellenőrizheti, hogy egy bejegyzés már létezik-e a Java HashMap-ben. Ehhez használhatja a containsKey() (kulcsokhoz) és a containsValue() (értékekhez) metódust. Ha az elem szerepel, a kimenet „true” lesz. Ha az elem nem szerepel a HashMap-ben, a kimenet „false” lesz. A két metódus így működik:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> customerList = new HashMap<>();
	customerList.put (1077, "Jerry Mowry");
	customerList.put (15312, "Peter Smith");
	customerList.put (73329, "Maria Grosso");
	System.out.println(customerList.containsKey(15312));
	System.out.println(customerList.containsValue("Stuart Miller");
	}
}
java

Mivel a „15312” kulcs szerepel, de a „Stuart Miller” érték nem, a kimenet így néz ki.

true
false
java
Ugrás a főmenübe