java - 如何迭代对象数组列表并设置为java 8中的另一个对象列表?

标签 java java-8

目前我有该数组中的对象数组列表,我必须迭代并添加到我的 LatestNewsDTO 列表中,我在下面的代码工作中做了什么,但我仍然不满意我的方式。他们有什么有效的方法吗,请告诉我。

谢谢

List<Object[]> latestNewses = latestNewsService.getTopNRecords(companyId, false, 3);
List<LatestNewsDTO> latestNewsList = new ArrayList();
latestNewses.forEach(objects -> {
    LatestNewsDTO latestNews = new LatestNewsDTO();
    latestNews.setId(((BigInteger) objects[0]).intValue());
    latestNews.setCreatedOn((Date) objects[1]);
    latestNews.setHeadLine((String) objects[2]);
    latestNews.setContent(((Object) objects[3]).toString());
    latestNews.setType((String) objects[4]);
    latestNewsList.add(latestNews); 
});

最佳答案

使用 Stream 将您的 Object[] 数组映射到 LatestNewsDTO 并将它们收集到 List 中:

List<LatestNewsDTO> latestNewsList =
    latestNewses.stream()
                .map(objects -> {
                    LatestNewsDTO latestNews = new LatestNewsDTO();
                    latestNews.setId(((BigInteger) objects[0]).intValue());
                    latestNews.setCreatedOn((Date) objects[1]);
                    latestNews.setHeadLine((String) objects[2]);
                    latestNews.setContent(((Object) objects[3]).toString());
                    latestNews.setType((String) objects[4]);
                    return latestNews;
                })
                .collect(Collectors.toList());

当然,如果您创建一个接受数组的 LatestNewsDTO 构造函数,代码看起来会更优雅。

List<LatestNewsDTO> latestNewsList =
    latestNewses.stream()
                .map(objects -> new LatestNewsDTO(objects))
                .collect(Collectors.toList());

现在 LatestNewsDTO (Object[] objects) 构造函数可以保存解析数组和设置实例成员的逻辑。

关于java - 如何迭代对象数组列表并设置为java 8中的另一个对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35790723/

相关文章:

java - 使用GCC编译Java文件时出错

java - 使用 lambda 表达式时在变量中存储一些值

安卓工作室 : lambda does not work

java - 使用 Spring、MyBatis 和 OracleDB 与多个应用程序服务器进行 Java 数据库事务

java - Discord 机器人在 if/else 语句中遍历两条路径?

java - 在 Java 运行时评估基于 Json 的规则

java - 为什么使用 .getSource() 方法时将 ChangeEvent 对象转换为 JSlider?

java - 使用 ResponseEntity 获取 Http Response

java - 如果 findFirst() 找到的第一个元素为 null,为什么会抛出 NullPointerException?

Java 8 流:myList.stream().map(Foo::bar).collect(Collectors.toList()) 的简写