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.
- A ForEach Loop módszer
- 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>();
businessDays.put("1", "Monday");
businessDays.put("2", "Tuesday");
businessDays.put("3", "Wednesday");
businessDays.put("4", "Thursday");
businessDays.put("5", "Friday");
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>();
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");
Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();
while (iterator.hasNext())
{
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!