Java8 GROUPBYは、パケットのセットを達成します

シーン:
Java8 GROUPBYパケットのセット、類似のMySQL関数によってパケット群を達成する、マップを与えることに留意されたいです

セットに従って個々のパケットの1プロパティ
SKUID応じて例えばパケット

地図<文字列、リスト<EntryDeliveryDetailywk >> detailsMap01 = dtos1.stream()
.collect(Collectors.groupingBy(EntryDeliveryDetailywk :: getskuId));
1
2
2複数の属性集合パケットに応じた
属性プロパティの組み合わせスプライシングソリューションを複数
一緒に新しいフィールドに複数のフィールド、GROUPBY使用Java8のグループ化

地図<文字列、リスト<EntryDeliveryDetailywk >> detailmap = details.stream()
.collect(Collectors.groupingBy(D - > fetchGroupKey(D)));

fetchGroupKeyストリングプライベート(EntryDeliveryDetailywk詳細){
        リターンdetail.getSkuId()のtoString()。
        + detail.getItemsName()
        + detail.getWarehouseId()のtoString()。   
        + detail.getSupplierId()のtoString();.
    }

溶液2からなるスタティック内部クラスの
セットのクラスタイプ(複数の属性に対応する、すなわち、パケットのメンバ変数)の静的内部要素の構成
EG

//静的な内部クラスの
クラス人{
    パブリック静的クラスNameAge {
        公共NameAge(文字列名、int型年齢){
            ...
        }

        //注方法及びハッシュ関数MUSTに等しいオーバーライド実装
    }

    公共NameAge getNameAge(){
        リターン新しいNameAge(名前、年齢);
    }
}

//グループ化
地図<NameAge、リスト<>>マップを= people.collect人(Collectors.groupingBy(人:: getNameAge));

解決策3つのネストされた呼び出しJava8のGROUPBYの
注意も、ネストされたマップを取得します

地図<文字列、地図<Integer型、リスト<人>>>マップ=人々が
    .collect(Collectors.groupingBy(人::のgetName、
        Collectors.groupingBy(人:: getAge));

//コール
map.get( "フレッド")GET( 18);.

リファレンス
https://stackoverflow.com/questions/28342814/group-by-multiple-field-names-in-java-8#
 

公開された776元の記事 ウォン称賛50 ビュー15万+

おすすめ

転載: blog.csdn.net/weixin_44018338/article/details/104982633