CodeGym /Java-blogg /Tilfeldig /Hvordan iterere et kart i Java
John Squirrels
Nivå
San Francisco

Hvordan iterere et kart i Java

Publisert i gruppen
I dette innlegget vil vi lære forskjellige måter å iterere et kart på i Java. Noen av de vanlige måtene og hvordan du bruker dem ved hjelp av eksempler. Før du begynner, antar vi at du forstår grensesnitt og kart i Java. Men her er en rask oppsummering for deg.

Hva er et kart i Java?

Det er mange tolkninger av dette, men la oss enkelt si det slik.
"Map er et grensesnitt i Java, som brukes til å lagre data i form av nøkkelverdi-par."
Hvis du tenker på hva brukes kart til? Eller når trengs de? Så er det mange situasjoner i det virkelige liv når vi trenger å lagre data i nøkkelverdi-par. For eksempel kan alle ordene som tilsvarer en enkelt bokstav i en ordbok lagres i form av et kart i Java.
K Drage, konge, Korea, ridder,..., etc.
L Lava, liv, lys, kjærlighet, Libanon,..., etc.
Dessuten kan du ta en titt på følgende eksempler for å forstå dette bedre.
Nøkkel Verdi
Familie-ID Familiemedlemmer
Klassenavn Student-ID
Områdenavn Postnummer
Områdeblokk Husnummer

Hvorfor må vi iterere gjennom et kart?

Vi må krysse eller iterere over et kart for å få tilgang til, endre eller fjerne data. La oss utforske noen av alternativene vi har.

Hva er noen vanlige måter å iterere et kart på i Java?

Selv om det er mange måter å krysse et kart på. Vi vil imidlertid fokusere på de mest effektive og enkle måtene.
  1. ForEach Loop-metoden
  2. Iterators-metoden
Vennligst finn implementeringen av begge metodene nedenfor.

Bruke Foreach Loop-metoden

Eksempel


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()); 
		}
	}
}

Produksjon

nøkkel = 1, verdi = mandagstast = 2, verdi = tirsdagstast = 3, verdi = onsdagstast = 4, verdi = torsdagstast = 5, verdi = fredag

Forklaring

I dette eksemplet brukte vi foreach loop til å iterere over kartet. Ved å bruke for-each-løkken får vi en entrySet() som gir en automatisert "visning" av dataene i kartet, i form av nøkkelverdi-par. Hvert oppføringssett inneholder en nøkkel og tilsvarende verdier. Hvor du kan bruke alle metodene til Map.Entry<key, value> i henhold til dine krav. Her har vi kun brukt getKey() og getValue() for å vise dataene på konsollen. Som en øvelse kan du utforske resten av metodene for å styrke kommandoen din på dette konseptet.

Ved hjelp av Iterators-metoden

Eksempel


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());

		}
	}
}

Produksjon

nøkkel = 11, verdi = novembernøkkel = 1, verdi = januarnøkkel = 12, verdi = desembernøkkel = 2, verdi = februarnøkkel = 3, verdi = marsnøkkel = 4, verdi = aprilnøkkel = 5, verdi = mainøkkel = 6, verdi = juninøkkel = 7, verdi = julinøkkel = 8, verdi = augustnøkkel = 9, verdi = septembernøkkel = 10, verdi = oktober

Forklaring

I dette eksemplet lager vi eksplisitt iterator for å krysse / iterere over kartet. Først må du importere iteratorklassen, og deretter hente iteratoren for oppføringSet. Gå nå gjennom kartet mens du fortsetter å sjekke den neste enheten som finnes på kartet. Der går du! Traverseringen din er fullført, akkurat som det.

Er Foreach-løkken bedre enn iterator-metoden?

Det spiller ingen rolle hvilken metode du bruker for å krysse et kart så lenge det gjør jobben for deg. Når det gjelder ytelse, har både for hver sløyfe og iteratorene samme tidskompleksitet . Så ingen er bedre enn den andre, det avhenger av hva du trenger å bruke og når.

Hva er forskjellen mellom de to metodene?

For-hver-løkken tillater ikke å oppdatere/endre dataene i kartet. Tvert imot kan du enkelt endre data ved å bruke iteratorer. Iteratorklassen forenkler deg ved å gi implementering for å redigere/fjerne dataene i kartet. Motsatt, hvis du prøver å redigere/slette kartdata ved å bruke for-each loop, vil det gi en ConcurrentModificationException . Grunnen til dette er at for-hver-løkken implisitt skaper en iterator, som ikke er eksponert for brukeren. Derfor har du ikke tilgang til å endre eller slette data.

Hvilken traverseringsmetode skal brukes og når?

Hvis du ikke er sikker på om du skal bruke for-hver eller iteratorene for å iterere kartet ditt, kan du ta følgende forslag.
  • Bruk iteratoren hvis du må endre kartet.
  • Bruk for-hver- løkken hvis du har nestede løkker (for å unngå kompleksitet).

Konklusjon

På slutten av innlegget håper vi du har lært hvordan du kan iterere kart i Java. Du oppfordres til å øve på disse og prøve ut andre traverseringsmetoder også. Føl deg fri til å hoppe tilbake eller legg ut spørsmål når du føler deg fast. Inntil da, god læring!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION