Herhaal een kaart in Java

1. Overzicht

In dit korte artikel zullen we de verschillende manieren bekijken waarop u door de invoer van een kaart in Java kunt bladeren.

Simpel gezegd, we kunnen de inhoud van een kaart extraheren met keySet (), valueSet () of entrySet (). Aangezien dit allemaal sets zijn, zijn vergelijkbare iteratieprincipes op alle sets van toepassing.

De Map.entrySet API retourneert een verzamelingweergave van de kaart, waarvan de elementen afkomstig zijn uit de Kaart klasse. De enige manier om een ​​verwijzing naar een enkel kaartitem te verkrijgen, is vanuit de iterator van deze verzamelingsweergave.

De entry.getKey () geeft de sleutel terug en entry.getValue () geeft de overeenkomstige waarde terug.

Laten we er een paar bekijken.

2. EntrySet en for loop

Laten we eerst eens kijken hoe itereren door een Kaart de ... gebruiken BinnenkomstSet:

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

Hier converteren we onze kaart naar een reeks vermeldingen en herhalen deze vervolgens met behulp van de klassieke voor-elke-benadering.

We hebben toegang tot een sleutel van elk item door te bellen getKey () en we hebben toegang tot een waarde van elk item door te bellen getValue ().

3. Iterator en EntrySet

Een andere benadering zou zijn om een ​​reeks vermeldingen te verkrijgen en de iteratie uit te voeren met behulp van een 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 ()); }}

Merk op hoe we het Iterator instantie met behulp van de iterator () API van entrySet (). Vervolgens doorlopen we, zoals gewoonlijk, de iterator met iterator.next ().

4. Met Lambda's

Laten we nu kijken hoe we een Kaart gebruik makend van lambda uitdrukkingen.

Net als de meeste andere dingen in Java 8, blijkt dit veel eenvoudiger te zijn dan de alternatieven; we maken gebruik van de voor elke () methode:

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

In dit geval hoeven we een kaart niet te converteren naar een set items. Voor meer informatie over lambda-uitdrukkingen kunt u hier beginnen.

5. Stroom API

Stroom API is een van de belangrijkste kenmerken van Java 8. We kunnen deze functie gebruiken om door een Kaart maar net als in eerdere voorbeelden, moeten we eerst een reeks vermeldingen verkrijgen:

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

Dit moet worden gebruikt als we van plan zijn om wat extra te doen Stroom verwerken. Anders is het gewoon een simpele voor elke () zoals eerder beschreven.

Om meer te weten te komen over Stroom API, bekijk dit artikel.

6. Conclusie

In deze zelfstudie hebben we ons gericht op een eenvoudige maar cruciale bewerking: het doorlopen van de invoer van een kaart.

We hebben een aantal methoden gezien die alleen met Java 8 kunnen worden gebruikt, namelijk Lambda-expressies en de Stroom API.

Zoals altijd zijn de codevoorbeelden in het artikel te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found