Próbuję konwertować stary konwencjonalny dla każdej pętli, aż do java7 do java8 dla każdej pętli dla zestawu pozycji mapy, ale dostaję błąd. Oto kod próbuję przekonwertować:forEach pętla Java 8 dla zestawu wpisów mapy
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}
Oto zmiany zrobiłem:
map.forEach(Map.Entry<String, String> entry -> {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
});
Próbowałem robić to za dobrze:
Map.Entry<String, String> entry;
map.forEach(entry -> {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
});
Ale nadal napotyka błąd . Błąd Dostaję za to: podpis Lambda Expression nie pasuje podpis funkcjonalnej metody interfejsu accept(String, String)
Wielki. Teraz działa oba. Ale który z nich jest lepszy? W takim przypadku wydajność byłaby lepsza? @JBNizet –
Druga wersja wymusza utworzenie instancji 'Map.Entry' dla każdego wpisu; pierwszy daje ci klucz i wartość bez instancji. Dlatego 'Map.Entry' jest pośrednikiem i możesz tego uniknąć używając pierwszej wersji. –
Dzięki @MarkoTopolnik Dostałem twój punkt. –