繁体   English   中英

如何将以下 Stream 转换为 Pojo

[英]How to convert the following Stream to a Pojo

数据表示如下

部门 | 计数 | 姓名

一个 | 5 | 拉梅什

一个 | 2 | 阿洛克

乙 | 4 | 苏雷什

乙 | 5 | 阿诺德

c | 4 | 布赖恩

c | 5 | 桑托什

c | 5 | 拉梅什

我想转换以下列表

List<Object[]> departWiseDistinctNameCount = Arrays.asList(Arrays.asList("a", "5", "Ramesh"), Arrays.asList("a", "2", "Alok"), Arrays.asList("b", "4", "Suresh"), Arrays.asList("b", "5", "Arnold"), Arrays.asList("c", "4", "Brian"), Arrays.asList("c", "5", "Santosh"), Arrays.asList("c", "5", "Ramesh"));

到 POJO

   class Dept {
    private String deptName;
    List<Counter> counters;
  }

    class Counter{
       private int count;
       private String name;
  }

正如评论中已经指出的那样,您绝对应该尝试直接将数据作为 POJO 列表获取。

但是,您询问了 map 列表的方法,所以这里是 go:

departWiseDistinctNameCount.stream()
            .collect(Collectors.groupingBy(l -> l.get(0),
                    Collectors.mapping(l -> new Counter(Integer.parseInt(l.get(1)), l.get(2)),
                            Collectors.toList())))
            .entrySet().stream().map(e -> new Dept(e.getKey(), e.getValue())).collect(Collectors.toList())

为了澄清:我添加了构造函数public Dept(String deptName, List<Counter> counters)public Counter(int count, String name)

此外,您声明departWiseDistinctNameCount的语句实际上会导致编译错误,因为无法将List<List<String>>强制转换为List<Object[]> 我假设一个List<List<String>> ,但如果你只有后者,你可以通过使用(String) l[0]而不是l.get(0)等轻松地在 stream 中进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM