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

soo*_*man 7 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); 
});
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 12

使用a StreamObject[]数组映射到LatestNewsDTOs并将它们收集到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());
Run Code Online (Sandbox Code Playgroud)

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

List<LatestNewsDTO> latestNewsList =
    latestNewses.stream()
                .map(objects -> new LatestNewsDTO(objects))
                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

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

  • 你甚至可以做`.map(LatestNewsDTO :: new)` (5认同)
  • 非常感谢.我会选择看起来非常优雅的第二种方法. (3认同)