【发布时间】:2021-02-09 01:23:25
【问题描述】:
我有两个类,其中有一个公共字段。 基于共同的外勤部门,需要获取所有记录的列表和总金额
根据部门 id 合并记录并对每个部门 id 的金额求和的最佳方法是什么?
// "ABC",(sum(1234.00f+1000.00f))
// "pqr",(sum(1200.00f+500.00f)))
// Expecting result as line 33, 34
package com.coll.java8.foreach;
public class Plist {
private String department;
private String posiName;
private double amount;
}
package com.coll.java8.foreach;
public class MList {
private String nameString;
private int id;
private String department;
}
package com.coll.java8.foreach;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.maxBy;
import java.math.MathContext;
public class Managers {
public static void main(String args[]) {
List<MList> manList = new ArrayList<MList>();
manList.add(new MList("Test1",123,"ABC"));
manList.add(new MList("Test2",134,"pqr"));
manList.add(new MList("Test3",456,"xyz"));
List<Plist> posslist = new ArrayList<Plist>();
posslist.add(new Plist("ABC","555",1234.00f));
posslist.add(new Plist("pqr","444",1200.00f));
posslist.add(new Plist("ABC","555",1000.00f));
posslist.add(new Plist("xyz","555",25.00f));
posslist.add(new Plist("pqr","444",500.00f));
// "ABC",(sum(1234.00f+1000.00f))
// "pqr",(sum(1200.00f+500.00f)))
// Expecting result as line 33, 34
}
【问题讨论】:
-
提示:PList 和 MList 应该派生自包含部门的类。然后阅读和过滤列表变得容易得多。
-
你需要得到什么总量?
MList没有数量所以当你“合并”列表时你想做什么? -
使用它需要的公共字段将数据显示为 "ABC",(sum(1234.00f+1000.00f)) // "pqr",(sum(1200.00f+500.00f)))
-
你想显示
MList的什么信息?部门和金额是PList的字段,因此根本不需要MList,除非您想要“'Test1 部门的金额总和”之类的内容。
标签: java collections merge