迭代集合,对每个项目执行操作并返回列表

时间:2015-05-11 08:04:50

标签: java java-8 java-stream

有没有办法用java 8 Stream API做到这一点?

我需要将每个集合项转换为其他类型(dto mapping)并将所有集合作为列表返回...

这样的东西
Collection<OriginObject> from = response.getContent();
DtoMapper dto = new DtoMapper();    
List<DestObject> to = from.stream().forEach(item -> dto.map(item)).collect(Collectors.toList());

public class DtoMapper {
    public DestObject map (OriginObject object) {
        return //conversion;
    }
}

提前谢谢

更新#1:唯一的流对象是response.getContent()

1 个答案:

答案 0 :(得分:4)

我认为您在以下情况之后:

List<SomeObject> result = response.getContent()
                                  .stream()
                                  .map(dto::map)
                                  .collect(Collectors.toList());

// do something with result if you need.

请注意forEach是终端操作。如果要对每个对象执行某些操作(例如打印它),则应使用它。如果您想继续调用链,可能需要进一步过滤或收集到列表中,您应该使用map