tôi muốn di chuyển ví dụ này để Java 8:Java lọc 8 bản đồ và sắp xếp
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");
}
Đúng ra:
FrontMiddleBack
Tôi đã thử với entrySet -> dòng nhưng nó không trở lại trong theo đúng thứ tự.
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());
Output:
MidleFrontBack
Tôi có thể có được kết quả tương tự sử dụng Java 8?
mã ban đầu của bạn bị hỏng. 'concat()' không sửa đổi chuỗi nó được gọi. – shmosel
'HashMap' không có thứ tự. Nếu bạn muốn giữ nguyên thứ tự, hãy sử dụng 'LinkedHashMap'. – shmosel
* Tôi đã cố gắng chuyển sang java 8. * Java 8 tương thích ngược. Bạn không phải thay đổi mọi dòng mã (hoặc bất kỳ) nào chỉ vì bạn đã cập nhật Java. – shmosel