「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java 8ストリームを使用して、リストをマップに効率的に翻訳するにはどうすればよいですか?

Java 8ストリームを使用して、リストをマップに効率的に翻訳するにはどうすればよいですか?

2025-02-06に投稿しました
ブラウズ:661

How Can I Efficiently Translate Lists to Maps Using Java 8 Streams?

翻訳リストをJava 8ストリーム

で翻訳するJava 8では、一般的なタスクは、オブジェクトのリストをストリームとラムダを使用してマップに変換することです。これは、希望の動作とGuavaのようなサードパーティライブラリの可用性に応じて、さまざまな方法で実現できます。マップのリストには、手動の反復と手書きループが含まれます。 最終マップ hashmap = new Hashmap (); for(最終的な選択の選択:選択){ hashmap.put(choice.getname()、choice); } Hashmapを返します。 }

guavaベースのソリューション

Guavaは、指定されたキー抽出器に基づいてリストからマップを生成するための便利な方法、Maps.uniqueIndexを提供します。 ]

guava with java 7
private Map nameMap(List choices) {
    final Map hashMap = new HashMap();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }

    return hashMap;
}

private map namemap(list choices){ return maps.uniqueIndex(choices、new function (){ @オーバーライド public string apply(最終的な選択入力){ return input.getName(); } }); }

guava with java 8 lambdas

java 8 lambdasはコードをさらに単純化します:

プライベートマップ namap(lit 選択){ return maps.uniqueIndex(choices、choice :: getName); }
private Map nameMap(List choices) {
    final Map hashMap = new HashMap();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }

    return hashMap;
}

救助のコレクター

コレクターズクラスは、マッピングリストのマッピングリストの堅牢な実装を提供します。 Tomapコレクターは、

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}

値抽出因子関数(それぞれの値を取得する関数(要素)

この場合、choice :: getName and function.identity()をそれぞれ使用してキーと値を取得できます:

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3