我想使用 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());