我想這個例子中遷移到Java 8:的Java 8地圖篩選和排序
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");
}
正確的輸出:
FrontMiddleBack
我試着用的entrySet - >流,但不會返回正確的順序。
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());
輸出:
MidleFrontBack
我能使用Java 8相同的結果?
你原來的代碼被打破。 'concat()'不修改它被調用的字符串。 – shmosel
'HashMap'是無序的。如果你想保持排序,使用'LinkedHashMap'。 – shmosel
*我試圖遷移到Java 8. * Java 8向後兼容。您不必因爲更新Java而更改每一行(或任何)的代碼。 – shmosel