JAVAリストGroupBy複数のフィールドと合計

Shivprsad Sammbhare:

名前、通貨、金額のフィールドを持つリストがあります。名前、通貨、金額合計でグループ化したいと思います。

これはサンプルデータと出力です

List<myPojo> rows= ................

public class myPojo
{

    private String name;
    private String currency;
    private BigDecimal amount;

......................
}

リストに結果/出力が欲しい

ユーザー-賛成票に「ありがとう」と言わないでください。

Stream APIを使用できます。使用Collectors.toMapおよび使用AbstractMap.SimpleEntryマップのキーとして。次に、同じキーの複数の値に対してマージ関数を定義します。

List<myPojo> res = new ArrayList<>(rows.stream()
                .collect(Collectors.toMap(
                        e -> new AbstractMap.SimpleEntry<>(e.getName(), e.getCurrency()),
                        Function.identity(),
                        (a, b) -> new myPojo(a.getName(), a.getCurrency(), a.getAmount().add(b.getAmount()))))
                .values());

デモ:

List<myPojo> list = new ArrayList<>();
list.add(new myPojo("A", "USD", new BigDecimal(1.0)));
list.add(new myPojo("A", "USD", new BigDecimal(2.0)));
list.add(new myPojo("A", "USD", new BigDecimal(3.0)));
list.add(new myPojo("B", "USD", new BigDecimal(1.0)));
list.add(new myPojo("B", "USD", new BigDecimal(2.0)));
list.add(new myPojo("B", "USD", new BigDecimal(3.0)));
list.add(new myPojo("A", "US", new BigDecimal(1.0)));
list.add(new myPojo("A", "US", new BigDecimal(2.0)));
list.add(new myPojo("A", "US", new BigDecimal(3.0)));
List<myPojo> res = new ArrayList<>(list.stream()
            .collect(Collectors.toMap(
                    e -> new AbstractMap.SimpleEntry<>(e.getName(), e.getCurrency()),
                    Function.identity(),
                    (a, b) -> new myPojo(a.getName(), a.getCurrency(), a.getAmount().add(b.getAmount()))))
            .values());
System.out.println(res.toString());

出力:

[myPojo [name=B, currency=USD, amount=6], 
 myPojo [name=A, currency=USD, amount=6], 
 myPojo [name=A, currency=US, amount=6]]

注:MyPojoより良い規則のために、クラスの名前を大文字にするようにしてください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のフィールドによると、合計のJavaストリーム群

分類Dev

JavaストリームgroupingByおよび複数のフィールドの合計

分類Dev

複数のテーブルのSQL合計フィールドとリンクフィールド

分類Dev

JavaのgroupingBy:合計複数のフィールド

分類Dev

複数カウントフィールドの合計

分類Dev

複数列の合計と合計フィールドの更新[MySQL]

分類Dev

Java 8ストリーム:複数のフィルターと複雑な条件

分類Dev

ネストされた繰り返しフィールドの複数のレベルを合計する

分類Dev

groupbyステートメント内の複数のフィールド

分類Dev

Java 8 GroupBy 1つのフィールドと複数のフィールドへのマッピング

分類Dev

Javaのストリーム:複数の範囲とフィルター

分類Dev

複数の場合の計算フィールド

分類Dev

Javaストリームを02フィールドでグループ化し、2つのBigDecimalフィールドで合計で集計

分類Dev

複数の単一フィールドと複合インデックス

分類Dev

Javaの8ストリーム複数のフィルタ

分類Dev

結合された集計クエリのフィールドで複数の行を集計する方法

分類Dev

LINQのGroupBy句の複数のフィールド(1つは計算フィールド)

分類Dev

Javaの関数リストを使用して2つのオブジェクトのフィールドを比較し、結果を合計する方法

分類Dev

カフカストリームのApp - 数と合計集計

分類Dev

JS-配列の合計リスト(テキストフィールドの合計名)

分類Dev

複数のテキストフィールドとドロップダウンリストの自動入力

分類Dev

複数の異なるテーブルのフィールドを合計するSQLクエリ

分類Dev

含まないユーザー; 複数の場合はフィルターとリスト... MYSQL

分類Dev

複数のjava8ストリーム合計

分類Dev

Javaオブジェクトのリストを複数のフィールドでソートし、特定のフィールドでグループ化する

分類Dev

Django Count()の複数のフィールドと、それらの合計で並べ替える

分類Dev

合計フィールドとの交差のSQLカウント

分類Dev

Java-最小のintをフィルターで除外した合計リスト

分類Dev

java8ストリームのグループ化複合変数の合計

Related 関連記事

  1. 1

    複数のフィールドによると、合計のJavaストリーム群

  2. 2

    JavaストリームgroupingByおよび複数のフィールドの合計

  3. 3

    複数のテーブルのSQL合計フィールドとリンクフィールド

  4. 4

    JavaのgroupingBy:合計複数のフィールド

  5. 5

    複数カウントフィールドの合計

  6. 6

    複数列の合計と合計フィールドの更新[MySQL]

  7. 7

    Java 8ストリーム:複数のフィルターと複雑な条件

  8. 8

    ネストされた繰り返しフィールドの複数のレベルを合計する

  9. 9

    groupbyステートメント内の複数のフィールド

  10. 10

    Java 8 GroupBy 1つのフィールドと複数のフィールドへのマッピング

  11. 11

    Javaのストリーム:複数の範囲とフィルター

  12. 12

    複数の場合の計算フィールド

  13. 13

    Javaストリームを02フィールドでグループ化し、2つのBigDecimalフィールドで合計で集計

  14. 14

    複数の単一フィールドと複合インデックス

  15. 15

    Javaの8ストリーム複数のフィルタ

  16. 16

    結合された集計クエリのフィールドで複数の行を集計する方法

  17. 17

    LINQのGroupBy句の複数のフィールド(1つは計算フィールド)

  18. 18

    Javaの関数リストを使用して2つのオブジェクトのフィールドを比較し、結果を合計する方法

  19. 19

    カフカストリームのApp - 数と合計集計

  20. 20

    JS-配列の合計リスト(テキストフィールドの合計名)

  21. 21

    複数のテキストフィールドとドロップダウンリストの自動入力

  22. 22

    複数の異なるテーブルのフィールドを合計するSQLクエリ

  23. 23

    含まないユーザー; 複数の場合はフィルターとリスト... MYSQL

  24. 24

    複数のjava8ストリーム合計

  25. 25

    Javaオブジェクトのリストを複数のフィールドでソートし、特定のフィールドでグループ化する

  26. 26

    Django Count()の複数のフィールドと、それらの合計で並べ替える

  27. 27

    合計フィールドとの交差のSQLカウント

  28. 28

    Java-最小のintをフィルターで除外した合計リスト

  29. 29

    java8ストリームのグループ化複合変数の合計

ホットタグ

アーカイブ