Java 遍历集合,对每个项执行操作并作为列表返回

Java 遍历集合,对每个项执行操作并作为列表返回,java,java-8,java-stream,Java,Java 8,Java Stream,有没有办法用Java8流API实现这一点 我需要将集合的每个项转换为其他类型(dto映射),并将所有集合作为列表返回 差不多 Collection<OriginObject> from = response.getContent(); DtoMapper dto = new DtoMapper(); List<DestObject> to = from.stream().forEach(item -> dto.map(item)).collect(Colle

有没有办法用Java8流API实现这一点

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

差不多

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;
    }
}
Collection from=response.getContent();
DtoMapper dto=新的DtoMapper();
List to=from.stream().forEach(item->dto.map(item)).collect(Collectors.toList());
公共类数据映射器{
公共对象映射(原始对象){
返回//转换;
}
}
先谢谢你


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

我想您需要以下内容:

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

// do something with result if you need.
List result=response.getContent()
.stream()
.map(dto::map)
.collect(Collectors.toList());
//如果你需要,做一些有结果的事情。

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

dto.stream().flatMap(r->r.getContent().stream()).map(…).collect(…)?您是想改变列表中的对象,还是想创建一个新的修改对象列表?@AlexisC
dto
不是流对象。。请参阅问题的更新响应的类型。getContent()?
List to=from.stream().map(item->dto.map(item)).collect(Collectors.toList())应该可以顺利编译…已经尝试过了。。主要问题是
collect
无法将原始对象的列表转换为新列表。。给我一个编译错误你能解释一下“把原来的对象列表转换成一个新的”吗?我编写的代码与您期望的结果有什么不同?
dto::map
将原始对象转换为新对象,而collect无法转换新类型的整个对象集合您说您想要一个新列表,而不是修改原始列表中的对象。你能澄清一下你所说的“转换新类型对象的整个集合”是什么意思吗?你不是很清楚。到目前为止,您已经提到了传入对象、传出对象、
SomeObject
DestObject
OriginObject
。我建议的代码采用
集合
,将每个这样的对象映射到
DestObject
,并将结果作为
列表
返回。如果这不是你想要的,请澄清。