Java8: ハッシュマップ ハッシュマップへ Stream / Map-Reduce / Collector を使用する 質問する

Java8: ハッシュマップ ハッシュマップへ Stream / Map-Reduce / Collector を使用する 質問する

私は単純な Java を->Listから「変換」する方法を知っています。つまり、YZ

List<String> x;
List<Integer> y = x.stream()
        .map(s -> Integer.parseInt(s))
        .collect(Collectors.toList());

ここで、基本的に同じことをマップでも実行したいと思います。

INPUT:
{
  "key1" -> "41",    // "41" and "42"
  "key2" -> "42"      // are Strings
}

OUTPUT:
{
  "key1" -> 41,      // 41 and 42
  "key2" -> 42       // are Integers
}

解決策はString->に限定されるべきではありませんInteger。上記の例のようにList、任意のメソッド (またはコンストラクター) を呼び出したいのです。

ベストアンサー1

Map<String, String> x;
Map<String, Integer> y =
    x.entrySet().stream()
        .collect(Collectors.toMap(
            e -> e.getKey(),
            e -> Integer.parseInt(e.getValue())
        ));

リスト コードほど便利ではありません。呼び出しMap.Entryで新しい を構築できないmap()ため、作業がcollect()呼び出しに混在します。

おすすめ記事