使用流映射 java 8 转换另一个列表中的列表



我想使用 stream 和 java 8 中的另一个选项基于 FieldError 列表创建一个 ErroDto 列表。我有这个 foreach,但我想用流和地图:

fieldErrors.stream()
.forEach(e -> errosDto.add(new ErroDto(e.getField(), e.getDefaultMessage())));

我在下面尝试这样做,但我认为这是错误的,因为我正在修改地图内的第二个列表:

fieldErrors.stream()
.map(e -> errosDto.add(new ErroDto(e.getField(), e.getDefaultMessage())));

然后我想映射并收集为列表。

map只应将每个FieldError实例转换为ErroDto实例。

使用collect将所有ErroDto实例收集到一个List中:

List<ErroDto> errosDto =
fieldErrors.stream()
.map(e -> new ErroDto(e.getField(), e.getDefaultMessage()))
.collect(Collectors.toList());

传递给map()方法的 lambda 表达式采用输入对象并返回输出对象。不应将其添加到map()方法本身的列表中。将从map()流收集到List<ErroDto>

List<ErroDto> errosDto = fieldErrors.stream()
.map(e -> new ErroDto(e.getField(), e.getDefaultMessage()))
.collect(Collectors.toList());

最新更新