CodeGym /Blog Java /Aleatoriu /Cum se repetă o hartă în Java
John Squirrels
Nivel
San Francisco

Cum se repetă o hartă în Java

Publicat în grup
În această postare, vom învăța diferite moduri de a repeta o hartă în Java. Unele dintre modalitățile sale comune și cum să le folosești cu ajutorul exemplelor. Înainte de a începe, presupunem că înțelegeți interfețele și hărțile în Java. Cu toate acestea, iată o scurtă recapitulare pentru tine.

Ce este o hartă în Java?

Există multe interpretări ale acestui lucru, dar să o punem pur și simplu astfel.
„Harta este o interfață în Java, care este folosită pentru a stoca date sub formă de perechi cheie-valoare.”
Dacă vă gândiți la ce sunt folosite hărțile? Sau cand sunt necesare? Apoi, există multe situații în viața reală când trebuie să stocăm date în perechi cheie-valoare. De exemplu, toate cuvintele care corespund unei singure litere dintr-un dicționar pot fi stocate sub forma unei hărți în Java.
K Zmeu, Rege, Coreea, Cavaler,..., etc.
L Lavă, Viață, Lumină, Dragoste, Liban,..., etc.
Mai mult, puteți arunca o privire la următoarele exemple pentru a înțelege mai bine acest lucru.
Cheie Valoare
ID de familie Membrii familiei
Numele clasei ID-urile studenților
Numele zonei Coduri poștale
Bloc zonal Numerele casei

De ce trebuie să repetăm ​​o hartă?

Trebuie să parcurgem sau să repetăm ​​o hartă pentru a accesa, modifica sau elimina date. Să explorăm câteva dintre opțiunile pe care le avem.

Care sunt câteva modalități comune de a repeta o hartă în Java?

Deși există multe moduri de a parcurge o hartă. Cu toate acestea, ne vom concentra pe cele mai eficiente și simple modalități.
  1. Metoda ForEach Loop
  2. Metoda Iteratorilor
Vă rugăm să găsiți mai jos implementarea ambelor metode.

Folosind metoda Foreach Loop

Exemplu


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

Ieșire

tastă = 1, valoare = cheie luni = 2, valoare = cheie marți = 3, valoare = cheie miercuri = 4, valoare = cheie joi = 5, valoare = vineri

Explicaţie

În acest exemplu, am folosit bucla foreach pentru a itera peste hartă. Folosind bucla for-each, obținem un entrySet() care oferă o „vizualizare” automată a datelor din hartă, sub formă de perechi cheie-valoare. Fiecare entrySet conține o cheie și valorile corespunzătoare. Unde puteți utiliza toate metodele Map.Entry<key, value> conform cerințelor dvs. Aici, am folosit doar getKey() și getValue() pentru a afișa datele pe consolă. Ca exercițiu, puteți explora restul metodelor pentru a vă consolida controlul asupra acestui concept.

Folosind metoda Iteratorilor

Exemplu


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

		}
	}
}

Ieșire

cheie = 11, valoare = cheia noiembrie = 1, valoare = cheia ianuarie = 12, valoare = cheia decembrie = 2, valoare = cheia februarie = 3, valoare = cheia martie = 4, valoare = cheia aprilie = 5, valoare = cheia mai = 6, valoare = cheia iunie = 7, valoare = cheia iulie = 8, valoare = cheia august = 9, valoare = cheia septembrie = 10, valoare = octombrie

Explicaţie

În acest exemplu, creăm un iterator explicit pentru a parcurge/itera peste hartă. Mai întâi, trebuie să importați clasa iterator, apoi obțineți iteratorul pentru entrySet. Acum traversați harta în timp ce continuați să verificați următoarea entitate care există pe hartă. Iată! Parcurgerea ta este completă, exact așa.

Este bucla Foreach mai bună decât metoda iteratoarelor?

Nu contează ce metodă folosiți pentru parcurgerea unei hărți atâta timp cât face treaba pentru dvs. În ceea ce privește performanța, atât pentru fiecare buclă, cât și iteratoarele au aceeași complexitate temporală . Deci niciunul nu este mai bun decât celălalt, depinde de ce trebuie să folosești și când.

Care este diferența dintre cele două metode?

Bucla for-each nu permite actualizarea/modificarea datelor din hartă. Dimpotrivă, puteți modifica cu ușurință datele folosind iteratoare. Clasa iteratoare vă facilitează prin furnizarea de implementare pentru editarea/eliminarea datelor din hartă. Dimpotrivă, dacă încercați să editați/ștergeți datele hărții utilizând bucla for-each, va arunca o excepție ConcurrentModificationException . Motivul pentru aceasta este că bucla for-each creează implicit un iterator, care nu este expus utilizatorului. Prin urmare, nu aveți acces pentru a modifica sau șterge orice date.

Ce metodă de traversare să folosiți și când?

Dacă nu sunteți sigur dacă să utilizați for-each sau iteratoarele pentru a vă repeta harta, atunci puteți lua următoarele sugestii.
  • Utilizați iteratorul dacă trebuie să modificați harta.
  • Utilizați bucla pentru fiecare dacă aveți bucle imbricate (pentru a evita complexitatea).

Concluzie

Până la sfârșitul postării, sperăm că ați învățat cum să repetați harta în Java. Sunteți încurajat să le practicați și să încercați și alte metode de traversare. Simțiți-vă liber să reveniți sau să postați întrebări ori de câte ori vă simțiți blocați. Până atunci, învățare fericită!
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION