Chcę przenieść ten przykład Java 8:Java filtr 8 map i sortowania
Map<String, String> data = new HashMap<String, String>() {{
put("name", "Middle");
put("prefix", "Front");
put("postfix", "Back");
}};
String title = "";
if (data.containsKey("prefix")) {
title += data.get("prefix");
}
if (data.containsKey("name")) {
title += data.get("name");
}
if (data.containsKey("postfix")) {
title += data.get("postfix");
}
Prawidłowe wyjście:
FrontMiddleBack
Próbowałem z entryset -> strumień, ale nie zwraca się prawidłowa kolejność.
String titles = macroParams.entrySet().stream()
.filter(map -> "name".equals(map.getKey()) || "postfix".equals(map.getKey()) || "prefix".equals(map.getKey()))
.sorted()
.map(Map.Entry::getValue)
.collect(Collectors.joining());
wyjściowa:
MidleFrontBack
mogę uzyskać taki sam efekt przy użyciu Java 8?
Twój oryginalny kod jest zepsuty. 'concat()' nie modyfikuje łańcucha, do którego jest wywoływany. – shmosel
'HashMap' jest nieuporządkowany. Jeśli chcesz zachować porządek, użyj 'LinkedHashMap'. – shmosel
* Próbowałem przeprowadzić migrację do wersji Java 8. * Java 8 jest kompatybilna wstecz. Nie musisz zmieniać każdej (ani żadnej) linii kodu tylko dlatego, że zaktualizowałeś Javę. – shmosel