Iterează o hartă în Java

1. Prezentare generală

În acest articol rapid, vom arunca o privire asupra diferitelor moduri de a itera prin intrările unei hărți în Java.

Pur și simplu, putem extrage conținutul unei hărți folosind keySet (), valueSet () sau entrySet () . Deoarece acestea sunt toate seturi, principii de iterație similare se aplică tuturor.

Map.entrySet API - ul returnează o colecție de vizualizare a hărții, ale cărei elemente sunt din harta clasei. Singura modalitate de a obține o referință la o singură intrare pe hartă este de la iteratorul acestei vizualizări de colecție.

T el entry.getKey () returnează cheia și entry.getValue () returnează valoarea corespunzătoare.

Să aruncăm o privire la câteva dintre acestea.

2. EntrySet și pentru Loop

Mai întâi, să vedem cum să iterați printr-o hartă folosind setul de intrări :

public void iterateUsingEntrySet(Map map) { for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }

Aici, convertim harta noastră într-un set de intrări și apoi iterăm prin ele folosind abordarea clasică pentru fiecare.

Putem accesa o cheie a fiecărei intrări apelând getKey () și putem accesa o valoare a fiecărei intrări apelând getValue ().

3. Iterator și EntrySet

O altă abordare ar fi obținerea unui set de intrări și efectuarea iterației folosind un Iterator:

public void iterateUsingIteratorAndEntry(Map map) { Iterator
    
      iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); System.out.println(entry.getKey() + ":" + entry.getValue()); } }
    

Observați cum putem obține instanța Iterator folosind iterator () API de entrySet (). Apoi, ca de obicei, trecem prin iterator cu iterator.next ().

4. Cu Lambdas

Să vedem acum cum să iterați o hartă folosind expresii lambda .

La fel ca majoritatea celorlalte lucruri din Java 8, acest lucru se dovedește a fi mult mai simplu decât alternativele; vom folosi metoda forEach () :

public void iterateUsingLambda(Map map) { map.forEach((k, v) -> System.out.println((k + ":" + v))); } 

În acest caz, nu este nevoie să convertim o hartă într-un set de intrări. Pentru a afla mai multe despre expresiile lambda, puteți începe aici.

5. Flux API

API-ul Stream este una dintre caracteristicile principale ale Java 8 . Putem utiliza această caracteristică și pentru a parcurge o hartă , dar, ca și în exemplele anterioare, trebuie să obținem mai întâi un set de intrări:

public void iterateUsingStreamAPI(Map map) { map.entrySet().stream() // ... .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue())); } 

Acest lucru ar trebui utilizat atunci când intenționăm să facem o procesare suplimentară a fluxului . În caz contrar, este doar un simplu pentru fiecare () așa cum s-a descris anterior.

Pentru a afla mai multe despre API-ul Stream , consultați acest articol.

6. Concluzie

În acest tutorial, ne-am concentrat pe o operație simplă, dar critică - iterând prin intrările unei hărți.

Am văzut câteva metode care pot fi utilizate doar cu Java 8, și anume expresiile Lambda și API-ul Stream .

Ca întotdeauna, exemplele de cod din articol pot fi găsite pe GitHub.