変換およびフィルタリングしたい Java Map があります。簡単な例として、すべての値を整数に変換してから、奇数のエントリを削除するとします。
Map<String, String> input = new HashMap<>();
input.put("a", "1234");
input.put("b", "2345");
input.put("c", "3456");
input.put("d", "4567");
Map<String, Integer> output = input.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
e -> Integer.parseInt(e.getValue())
))
.entrySet().stream()
.filter(e -> e.getValue() % 2 == 0)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(output.toString());
これは正しく、結果は次のとおりです。{a=1234, c=3456}
とはいえ、二度電話しないようにするにはどうしたらいいのだろうかと考えずにはいられません.entrySet().stream()
。
変換操作とフィルター操作の両方を実行 .collect()
し、最後に 1 回だけ呼び出す方法はありますか?