CodeGym /Java blog /Véletlen /Hogyan iteráljunk térképet Java nyelven
John Squirrels
Szint
San Francisco

Hogyan iteráljunk térképet Java nyelven

Megjelent a csoportban
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!
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION