【发布时间】:2020-07-15 08:14:11
【问题描述】:
我有一个对象列表List<WorkingActivityModel> mList = new ArrayList<>();
public class WorkingActivityModel {
private String name;
private Sales sales;
private Shifts shifts;
}
销售模式是:
public class Sales {
private int product1;
private int product2;
}
班次模型是:
public class Shifts {
private int shift1;
private int shift2;
}
如何按名称对List<WorkingActivity> mList 中的商品进行分组,然后汇总相应的销售额和班次?因此,如果我在列表中有 2 个具有相同名称的项目,那么将它们分组并汇总其销售额和班次?
我尝试过直播但没有成功:
List<WorkingActivityModel> result = mList.stream()
.collect(groupingBy(WorkingActivityModel::getName, LinkedHashMap::new, toList()))
.values().stream()
.flatMap(Collection::stream)
.collect(toList());
另一种选择是:
List<WorkingActivity> mList = new ArrayList<>();
HashMap<String, List<WorkingActivityModel>> map = new HashMap<>();
for(WorkingActivityModel o : mList){
if (!map.containsKey(o.getKey())) {
List<WorkingActivityModel> list = new ArrayList<>();
list.add(o);
map.put(o.getKey(), list);
} else {
map.get(o.getKey()).add(o);
}
}
在这种情况下,我不知道如何将相应的销售额和班次相加
编辑
下面是预期结果的示例:
【问题讨论】:
-
我有两个问题:1:
List<WorkingActivity>应该是List<WorkingActivityModel>,对吗? 2:你能举个例子吗? -
您的最终名单将是什么样子。可以发帖吗?
-
@Ema.jar,我编辑了我的问题,List
它是一个 ArrayList。