Ebben a bejegyzésben különböző módokat tanulunk meg a térkép Java nyelven történő iterálására. Néhány elterjedt módja és használatuk példák segítségével. Mielőtt elkezdené, feltételezzük, hogy ismeri a Java felületeket és térképeket . Íme azonban egy gyors összefoglaló.

Mi az a térkép Java nyelven?

Ennek sokféle értelmezése van, de egyszerűen fogalmazzuk meg.
"A Map egy Java interfész, amelyet kulcs-érték párok formájában tárolnak."
Ha azon gondolkodik, mire használják a térképeket? Vagy mikor van rájuk szükség? Aztán a való életben sok olyan helyzet adódik, amikor kulcs-érték párokban kell tárolnunk az adatokat. Például a szótár egyetlen betűjének megfelelő összes szót térkép formájában tárolhatjuk Java nyelven.
K Kite, Király, Korea, Knight,... stb.
L Láva, Élet, Fény, Szerelem, Libanon,... stb.
Ezen túlmenően a következő példák segítségével jobban megértheti ezt.
Kulcs Érték
Családi azonosító Családtagok
Osztály név Diákigazolványok
Terület neve Irányítószámok
Terület blokk Házszámok

Miért kell a térképen keresztül iterálnunk?

Az adatok eléréséhez, módosításához vagy eltávolításához egy térképen kell bejárnunk vagy iterálnunk kell. Nézzünk meg néhány lehetőséget a rendelkezésünkre álló lehetőségek közül.

Milyen gyakori módjai vannak a térkép iterációjának Java nyelven?

Bár sokféleképpen lehet bejárni a térképet. Mi azonban a leghatékonyabb és legegyszerűbb módszerekre összpontosítunk.
  1. A ForEach Loop módszer
  2. Az iterátorok módszere
Alább találja mindkét módszer megvalósítását.

A Foreach Loop módszerrel

Példa


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

public class ForEachDemo {

	public static void main(String[] args) {

		Map<String, String> businessDays = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		businessDays.put("1", "Monday");
		businessDays.put("2", "Tuesday");
		businessDays.put("3", "Wednesday");
		businessDays.put("4", "Thursday");
		businessDays.put("5", "Friday");

		// Iterating over the Map.entrySet() using map.forEach
		for (Map.Entry<String, String> entry : businessDays.entrySet()) 
		{
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); 
		}
	}
}

Kimenet

gomb = 1, érték = hétfő gomb = 2, érték = kedd gomb = 3, érték = szerda gomb = 4, érték = csütörtök gomb = 5, érték = péntek

Magyarázat

Ebben a példában a foreach ciklust használtuk a térképen való iterációhoz. A for-each ciklus használatával egy entrySet()-et kapunk , amely automatikusan „nézetet” biztosít a térképen lévő adatokról kulcs-érték párok formájában. Minden bejegyzéskészlet tartalmaz egy kulcsot és a megfelelő értékeket. Ahol használhatja a Map.Entry<kulcs, érték> összes metódusát igényei szerint. Itt csak a getKey() és getValue() függvényeket használtuk az adatok konzolon való megjelenítésére. Gyakorlatként felfedezheti a többi módszert, amellyel megerősítheti tudását ezen a koncepción.

Az Iterátorok módszerével

Példa


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

public class MapIterator {

	public static void main(String[] args) {

		Map<String, String> monthsInAYear = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		monthsInAYear.put("1", "January");
		monthsInAYear.put("2", "February");
		monthsInAYear.put("3", "March");
		monthsInAYear.put("4", "April");
		monthsInAYear.put("5", "May");
		monthsInAYear.put("6", "June");
		monthsInAYear.put("7", "July");
		monthsInAYear.put("8", "August");
		monthsInAYear.put("9", "September");
		monthsInAYear.put("10", "October");
		monthsInAYear.put("11", "November");
		monthsInAYear.put("12", "December");

		// iterate map / traverse the map using using iterator
		Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();

		while (iterator.hasNext()) 
		{
			// check if next entry exists in the map
			Map.Entry<String, String> entry = iterator.next(); 
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());

		}
	}
}

Kimenet

kulcs = 11, érték = novemberi kulcs = 1, érték = januári kulcs = 12, érték = decemberi kulcs = 2, érték = februári kulcs = 3, érték = márciusi kulcs = 4, érték = áprilisi kulcs = 5, érték = májusi kulcs = 6, érték = június kulcs = 7, érték = július kulcs = 8, érték = augusztus kulcs = 9, érték = szeptember kulcs = 10, érték = október

Magyarázat

Ebben a példában explicit iterátort hozunk létre a térképen való bejáráshoz / iterációhoz. Először is importálnia kell az iterátor osztályt, majd be kell szereznie az iterátort az entrySet számára. Most menjen át a térképen, miközben folyamatosan ellenőrizze a térképen létező következő entitást. Nesze! A bejárásod kész, csak úgy.

A Foreach ciklus jobb, mint az iterátorok módszere?

Nem számít, melyik módszert használja a térkép bejárására, amíg az elvégzi a munkát Ön helyett. A teljesítmény szempontjából mind a for-each ciklus, mind az iterátorok időbeli összetettsége azonos . Tehát egyik sem jobb a másiknál, ez attól függ, hogy mit és mikor kell használni.

Mi a különbség a két módszer között?

A for-each ciklus nem teszi lehetővé a térképen lévő adatok frissítését/módosítását. Éppen ellenkezőleg, az iterátorok segítségével könnyedén módosíthatja az adatokat. Az iterátorok osztály megkönnyíti a megvalósítást a térképen lévő adatok szerkesztéséhez/eltávolításához. Ezzel szemben, ha megpróbálja szerkeszteni/törölni a térképadatokat a for-each ciklus használatával, akkor az ConcurrentModificationException kivételt fog dobni . Ennek az az oka, hogy a for-each ciklus implicit módon egy iterátort hoz létre, amely nem látható a felhasználó számára. Ezért nincs hozzáférése semmilyen adat módosításához vagy törléséhez.

Melyik bejárási módszert használja és mikor?

Ha nem biztos abban, hogy a for-each vagy az iterátorokat használja a térkép iterálásához, akkor megfogadhatja a következő javaslatokat.
  • Használja az iterátort , ha módosítania kell a térképet.
  • Használja a for-each ciklust, ha beágyazott ciklusai vannak (a bonyolultság elkerülése érdekében).

Következtetés

Reméljük, hogy a bejegyzés végére megtanultad a térkép iterációját Java nyelven. Javasoljuk, hogy gyakorolja ezeket, és próbáljon ki más bejárási módszereket is. Nyugodtan ugorjon vissza, vagy tegyen fel kérdéseket, amikor úgy érzi, elakad. Addig is jó tanulást!