ホームページ > Java > &#&チュートリアル > Java 8 でリストをマップに効率的に変換するにはどうすればよいですか?

Java 8 でリストをマップに効率的に変換するにはどうすればよいですか?

DDD
リリース: 2024-12-28 10:32:09
オリジナル
987 人が閲覧しました

How Can I Efficiently Convert a List to a Map in Java 8?

リストを変換するための Java 8 ソリューション into Map

Java 8 では、ストリーム操作を使用してオブジェクトのリストをマップに効率的に変換できます。 Choice オブジェクトのリストを Map にマップする次のシナリオを考えてみましょう。 Choice オブジェクトの name フィールドに基づきます。

従来の Java 7 アプローチ

Java 7 では、通常、for-each ループを使用し、手動でマップを構築します:

private Map<String, Choice> nameMap(List<Choice> choices) {
    final Map<String, Choice> hashMap = new HashMap<>();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }
    return hashMap;
}
ログイン後にコピー

Java 8 ストリームアプローチ

Java 8 ストリームは、このタスクを達成するためのより簡潔で表現力豊かな方法を提供します。

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName, Function.identity()));
ログイン後にコピー

コードの詳細

  • choices.stream() は入力リストからストリームを作成しますChoices.
  • Collectors.toMap() は、要素をマップに蓄積するコレクターです。これは 2 つの引数を取ります:

    • Choice::getName: 各 Choice オブジェクトからマップ キー (名前) を抽出する関数。
    • Function.identity(): を返す関数入力オブジェクト自体。この場合は Choice オブジェクトです。

Collectors.toMap() コレクターでは、各名前フィールドを結果のマップ結果内の対応する Choice オブジェクトに効果的にマップします。このアプローチにより、マッピング プロセスが簡素化され、手動によるループの繰り返しやマップの構築が不要になります。

以上がJava 8 でリストをマップに効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート