Java 如何将以下流转换为Pojo

Java 如何将以下流转换为Pojo,java,java-8,java-stream,Java,Java 8,Java Stream,数据表示如下所示 部门|计数|名称 a | 5 |拉梅什 a | 2 | Alok b | 4 |苏雷什 阿诺德 c | 4 |布赖恩 c|5|Santosh c | 5 |拉梅什 我想转换下面的列表 List<Object[]> departWiseDistinctNameCount = Arrays.asList(Arrays.asList("a", "5", "Ramesh"), Arrays.asList("a", "2", "Alok"), Arrays.asList("b

数据表示如下所示

部门|计数|名称

a | 5 |拉梅什

a | 2 | Alok

b | 4 |苏雷什

阿诺德

c | 4 |布赖恩

c|5|Santosh

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"));
List departwisedistinctnamecont=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”);
到波乔

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

    class Counter{
       private int count;
       private String name;
  }
班级部门{
私有字符串deptName;
列出计数器;
}
班级计数器{
私人整数计数;
私有字符串名称;
}

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

但是,您要求提供一种映射列表的方法,因此,请执行以下操作:

departWiseDistinctNameCount.stream()
.collect(收集器.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-counters)
public-Counter(int-count,String-name)


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

为什么它是这样的:Arrays.asList(“a”,“5”,“Ramesh”),你为什么不首先将它构建为pojo呢?你可以使用streams的映射功能来做你想做的事情。我正在从数据库中获取它,所以它是一行格式的。好吗?你为什么不直接把它作为POJO的列表来获取,而不是以后映射它们呢?你看了我的问题了吗,但它是为列表的吗?@soorapadman他可以很容易地从数据库中直接读取数据到所需的类型。“事后映射”是冗余的。