一部のデータを使用して計算を行っています。オブジェクトにはいくつかの数値プロパティがあります。1つのプロパティのタイプごとにグループ化を計算しました。しかし、必要なのは各数値で計算することです。それで、この問題を解決する方法はありますか?
Person p1 = new Person("p1","type1",18,3);
Person p2 = new Person("p2","type2",10,6);
Person p3 = new Person("p3","type1",5,8);
List<Person> personList = new ArrayList<>();
personList.add(p1);
personList.add(p2);
personList.add(p3);
Map<String, Integer> collect =
personList.stream().collect(
Collectors.groupingBy(
Person::getType,Collectors.summingInt(Person::getAge)
)
);
各プロパティと単一の結果マップの合計を期待しています。マップの値は、map / array / listです。例えば:
type1 [23,11]
type2 [10,6]
コメントでも指摘されているように、出力のタイプをここで定義することが重要です。それを計画する方法の要点を追加するにはCollectors.toMap
、custom mergeFunction
asで使用できます:
List<Person> personList = new ArrayList<>();
Map<String, Person> collect = personList.stream()
.collect(Collectors.toMap(Person::getType, a -> a, (p1, p2) ->
new Person(p1.getX(), p1.getType(),
p1.getAge() + p2.getAge(),
p1.getCode() + p2.getCode()))); // named the other attribute 'code'
これで、すべてに対して、合計された整数値type
を持つPerson
オブジェクトがあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加