一线从另​​一个列表初始化列表

时间:2019-02-08 13:41:14

标签: java arraylist java-8 initialization java-stream

我想以最短的方式初始化我的D的列表。现在我正在使用:

public List<SomeItemDto> itemsToDto(List<SomeItem> items) {
    List<SomeItemDto> itemsDto = new ArrayList<SomeItemDto>();
    for (SomeItem item : items) {
        itemsDto.add(itemToDto(item));
    }
    return itemsDto;
}

有什么方法可以使其成为单线的吗?

3 个答案:

答案 0 :(得分:5)

您可以使用stream并进一步map ping为:

return items.stream()
            .map(item -> itemToDto(item)) // map SomeItem to SomeItemDto
            .collect(Collectors.toList());

答案 1 :(得分:3)

您可以使用map,它基本上将功能应用于元素

List<SomeItemDto> itemsDto = items.stream().map(item -> itemToDto(item))
                                  .collect(Collectors.toList())

答案 2 :(得分:2)

如果您愿意使用第三方库,则可以将ListIterate中的Eclipse Collections实用程序与任何List一起使用。

List<SomeItemDto> itemsDto = ListIterate.collect(items, this::itemToDto);

如果项目是Eclipse Collections中的MutableList,则可以按如下所示直接在列表上使用API​​:

List<SomeItemDto> itemsDto = items.collect(this::itemToDto); 

注意:我是Eclipse Collections的提交者。