我有一个称为 Info
的类
public class Info {
private String account;
private String opportunity;
private Integer value;
private String desc;
}
我想要将一组Info
根据两个字段(先按账户再按机会)进行分组,并根据其值进行排序。即:
在分组和排序之前的信息列表:
List<Info> infos = [(account = 1234, opportunity = abs, value = 4, desc= test),
(account = 1234, opportunity = abs, value = 5, desc = testing),
(account = 1234, opportunity = abss, value = 10, desc = vip),
(account = 123, opportunity = abss, value = 8, desc = vip),
(account = 12, opportunity = absddd, value = 4, desc = production),
(account = 12, opportunity = absooo, value = 2, desc = test)]
在分组和排序后,我期望的结果是:
Map<String, Map<String, List<Info>>> result = {
1234 = {
abss = [(account = 1234, opportunity = abss, value = 10, desc = vip)],
abs = [(account = 1234, opportunity = abs, value = 5, desc = testing),
(account = 1234, opportunity = abs, value = 4, desc = test)]
},
123 = {
abss = [(account = 123, opportunity = abss, value = 8, desc = vip)]
},
12 = {
absddd = [(account = 12, opportunity = absddd, value = 4, desc = production)],
absooo = [(account = 12, opportunity = absooo, value = 2, desc = test)]
}
}
o/p是基于值排序的(10->(5+4)->8->4->2)
我尝试了如下代码= infos.stream().collect(Collectors.groupingBy(Info::getAccount, Collectors.groupingBy(r -> r.getOpportunity(), Collectors.toList())))
, 但它的排序是随机的。