目前我有来自该数组的对象数组列表我必须迭代并添加到我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 Stream将Object[]数组映射到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)构造函数可以保存解析数组的逻辑并设置实例的成员.