私は、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