V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rqxiao
V2EX  ›  编程

list 一个集合的展示

  •  1
     
  •   rqxiao · 2020-02-20 09:27:19 +08:00 · 3248 次点击
    这是一个创建于 650 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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}
    6 条回复    2020-02-20 15:57:18 +08:00
    IMCA1024
        1
    IMCA1024  
       2020-02-20 09:47:00 +08:00
    没想到啥好的方案
    然后借楼问下 这种情况 : 多核条件下 改 stream()为 parallelStream()是不是会好点?
    rqxiao
        2
    rqxiao  
    OP
       2020-02-20 09:58:23 +08:00
    filter 再 groupby 之后 其他组里存在 code,但本组里不存在就没有完全显示
    netsail
        3
    netsail  
       2020-02-20 10:00:41 +08:00
    解决方案应该由如下:
    1、再创建一个 List<RecordVO>
    2、协商前端适配 List<Record>
    charles2java
        4
    charles2java  
       2020-02-20 11:08:43 +08:00 via Android
    可以使用 guava 的 mutiMap,组名当做 key. 其他属性的对象当做 value
    ShienPro
        5
    ShienPro  
       2020-02-20 15:05:25 +08:00
    ipwx
        6
    ipwx  
       2020-02-20 15:57:18 +08:00
    y1s1 为啥不写个 for 循环?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3483 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:23 · PVG 09:23 · LAX 17:23 · JFK 20:23
    ♥ Do have faith in what you're doing.