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