Java 8でのリストからリストのマップへの変換方法


  1. forEachメソッドを使用する方法: リストの要素を1つずつ取り出し、マップのキーと値のペアとして追加します。

    List<String> list = Arrays.asList("apple", "banana", "cherry");
    Map<String, Integer> map = new HashMap<>();
    list.forEach(item -> map.put(item, item.length()));
    System.out.println(map);

    出力結果:

    {apple=5, banana=6, cherry=6}
  2. Stream APIを使用する方法: ストリームを介してリストの要素を処理し、Collectors.toMap()メソッドを使用してマップに変換します。

    List<String> list = Arrays.asList("apple", "banana", "cherry");
    Map<String, Integer> map = list.stream()
                                  .collect(Collectors.toMap(item -> item, item -> item.length()));
    System.out.println(map);

    出力結果:

    {apple=5, banana=6, cherry=6}
  3. Stream APIとメソッド参照を使用する方法: Collectors.toMap()メソッドにメソッド参照を使用して、より短くコードを記述することもできます。

    List<String> list = Arrays.asList("apple", "banana", "cherry");
    Map<String, Integer> map = list.stream()
                                  .collect(Collectors.toMap(Function.identity(), String::length));
    System.out.println(map);

    出力結果:

    {apple=5, banana=6, cherry=6}

上記のコード例では、List<String>型のリストをMap<String, Integer>型のマップに変換しています。リストの要素がマップのキーになり、各要素の長さがマップの値になります。任意の型のリストや異なるマップの要件に合わせてコードを調整することができます。

このような方法を使用すると、Java 8の新機能であるラムダ式やストリームAPIを活用して、効率的にリストからリストのマップへの変換ができます。