CodeGym /Java blog /Tilfældig /Sådan gentages et kort i Java
John Squirrels
Niveau
San Francisco

Sådan gentages et kort i Java

Udgivet i gruppen
I dette indlæg vil vi lære forskellige måder at iterere et kort på i Java. Nogle af dens almindelige måder, og hvordan man bruger dem ved hjælp af eksempler. Før du går i gang, antager vi, at du forstår grænseflader og kort i Java. Men her er en hurtig opsummering til dig.

Hvad er et kort i Java?

Der er mange fortolkninger af dette, men lad os ganske enkelt sige det sådan.
"Kort er en grænseflade i Java, der bruges til at gemme data i form af nøgleværdi-par."
Hvis du tænker på, hvad bruges kort til? Eller hvornår er de nødvendige? Så er der mange situationer i det virkelige liv, hvor vi skal lagre data i nøgleværdi-par. For eksempel kan alle de ord, der svarer til et enkelt bogstav i en ordbog, gemmes i form af et kort i Java.
K Drage, Konge, Korea, Ridder,... osv.
L Lava, liv, lys, kærlighed, Libanon,... osv.
Desuden kan du se på følgende eksempler for at forstå dette bedre.
Nøgle Værdi
Familie ID Familie medlemmer
Klassens navn Studie-id'er
Områdenavn Postnummer
Områdeblok Husnumre

Hvorfor skal vi gentage et kort?

Vi er nødt til at krydse eller iterere over et kort for at få adgang til, ændre eller fjerne data. Lad os undersøge nogle af de muligheder, vi har.

Hvad er nogle almindelige måder at iterere et kort på i Java?

Selvom der er mange måder at krydse et kort på. Vi vil dog fokusere på de mest effektive og enkle måder.
  1. ForEach Loop-metoden
  2. Iterator-metoden
Find implementeringen af ​​begge metoder nedenfor.

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

Produktion

tast = 1, værdi = mandagstast = 2, værdi = tirsdagstast = 3, værdi = onsdagstast = 4, værdi = torsdagstast = 5, værdi = fredag

Forklaring

I dette eksempel brugte vi foreach loop til at iterere over kortet. Ved at bruge for-each-løkken får vi en entrySet() som giver en automatiseret "visning" af dataene i kortet, i form af nøgle-værdi-par. Hvert entrySet indeholder en nøgle og tilsvarende værdier. Hvor du kan bruge alle metoderne til Map.Entry<key, value> i henhold til dine krav. Her har vi kun brugt getKey() og getValue() til at vise dataene på konsollen. Som en øvelse kan du udforske resten af ​​metoderne til at styrke din kommando på dette koncept.

Ved hjælp af 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());

		}
	}
}

Produktion

nøgle = 11, værdi = november nøgle = 1, værdi = januar nøgle = 12, værdi = december nøgle = 2, værdi = februar nøgle = 3, værdi = marts nøgle = 4, værdi = april nøgle = 5, værdi = maj nøgle = 6, værdi = juninøgle = 7, værdi = julinøgle = 8, værdi = augustnøgle = 9, værdi = septembernøgle = 10, værdi = oktober

Forklaring

I dette eksempel opretter vi eksplicit iterator til at krydse / iterere over kortet. Først skal du importere iteratorklassen og derefter hente iteratoren til entrySet. Gennemse nu kortet, mens du bliver ved med at tjekke den næste enhed, der findes på kortet. Værsgo! Din gennemkøring er fuldendt, bare sådan.

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

Det er ligegyldigt, hvilken metode du bruger til at krydse et kort, så længe det gør jobbet for dig. Med hensyn til ydeevne har både for-hver sløjfe og iteratorerne samme tidskompleksitet . Så ingen er bedre end den anden, det afhænger af hvad du skal bruge og hvornår.

Hvad er forskellen mellem de to metoder?

For-each-løkken tillader ikke at opdatere/ændre dataene på kortet. Tværtimod kan du nemt ændre data ved hjælp af iteratorer. Iterator-klassen letter dig ved at levere implementering til at redigere/fjerne dataene på kortet. Modsat, hvis du forsøger at redigere/slette kortdata ved hjælp af for-each-løkken, vil det afgive en ConcurrentModificationException . Grunden til dette er, at for-each-løkken implicit skaber en iterator, som ikke er eksponeret for brugeren. Derfor har du ikke adgang til at ændre eller slette nogen data.

Hvilken gennemløbsmetode skal bruges og hvornår?

Hvis du ikke er sikker på, om du skal bruge for-each eller iteratorerne til at iterere dit kort, så kan du tage følgende forslag.
  • Brug iteratoren , hvis du skal ændre kortet.
  • Brug for-hver- løkken, hvis du har indlejrede løkker (for at undgå kompleksitet).

Konklusion

Ved slutningen af ​​indlægget håber vi, at du har lært at gentage kort i Java. Du opfordres til at øve dig på disse og også prøve andre gennemkøringsmetoder. Du er velkommen til at hoppe tilbage eller stille spørgsmål, når du føler dig fastlåst. Indtil da, god læring!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION