シーン:
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#