Sto provando a convertire i vecchi convenzionali per ogni ciclo fino a java7 in java8 per ogni ciclo per un set di voci di mappa ma sto ricevendo un errore. Ecco il codice che sto cercando di convertire:forEach loop Java 8 per il set di voci Mappa
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}
Ecco i cambiamenti che ho fatto:
map.forEach(Map.Entry<String, String> entry -> {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
});
Ho provato a fare anche questo:
Map.Entry<String, String> entry;
map.forEach(entry -> {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
});
ma l'errore ancora di fronte . L'errore che sto ricevendo per questo è: Firma del Lambda espressione non corrisponde alla firma del metodo di interfaccia funzionale accept(String, String)
Grande. Ora lavorando entrambi. Ma qual è il modo migliore? In tal caso, le prestazioni sarebbero migliori? @ JBNizet –
La seconda versione forza l'istanza di 'Map.Entry' da creare per ogni voce; il primo ti dà la chiave e il valore senza alcuna istanziazione. Pertanto 'Map.Entry' è un intermediario e puoi evitarlo usando la prima versione. –
Grazie a @MarkoTopolnik ho capito il tuo punto. –