list 一个集合的展示

2020-02-20 09:27:19 +08:00
 rqxiao
public class Record {

//组
private String group;

//code
private String code;

//数量
private Integer count;




List<Record> list=new ArrayList<>();
list.add(new Record("组 1","code1",2));
list.add(new Record("组 1","code2",1));
list.add(new Record("组 2","code1",1));
list.add(new Record("组 2","code3",1));

前端希望的结果展示如下,所有左边的列(组)都是另一个地方查出来的需要与现在这个集合去匹配



------ code1 code2 code3
---------------------------
组 1 - | 2 | 1 | 0
---------------------------
组 2 - | 1 | 0 | 1
---------------------------
合计 - | 3 |1 | 1


现在除了 filter 再 groupby 之后 还有什么好的办法能够完整展示这个结果吗

Map<String, Integer> collect = list.stream().filter(record -> "组 1".equals(record.getGroup()))
.collect(
Collectors.groupingBy(Record::getCode, Collectors.summingInt(Record::getCount)));

{code2=1, code1=2}
{code3=1, code1=1}
3796 次点击
所在节点    编程
6 条回复
IMCA1024
2020-02-20 09:47:00 +08:00
没想到啥好的方案
然后借楼问下 这种情况 : 多核条件下 改 stream()为 parallelStream()是不是会好点?
rqxiao
2020-02-20 09:58:23 +08:00
filter 再 groupby 之后 其他组里存在 code,但本组里不存在就没有完全显示
netsail
2020-02-20 10:00:41 +08:00
解决方案应该由如下:
1、再创建一个 List<RecordVO>
2、协商前端适配 List<Record>
charles2java
2020-02-20 11:08:43 +08:00
可以使用 guava 的 mutiMap,组名当做 key. 其他属性的对象当做 value
ShienPro
2020-02-20 15:05:25 +08:00
ipwx
2020-02-20 15:57:18 +08:00
y1s1 为啥不写个 for 循环?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/646012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX