Java 如何将以下流转换为Pojo
数据表示如下所示 部门|计数|名称 a | 5 |拉梅什 a | 2 | Alok b | 4 |苏雷什 阿诺德 c | 4 |布赖恩 c|5|Santosh c | 5 |拉梅什 我想转换下面的列表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
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他可以很容易地从数据库中直接读取数据到所需的类型。“事后映射”是冗余的。