myList
.stream()
.map((question) -> {
question.setQuestionId(UUID.randomUUID().toString());
return question;
});
以下java代码没有进入map函数。有人可以指点我在这里做的根本错误吗? myList是一个包含一些元素的ArrayList。
答案 0 :(得分:3)
如果查看java.util.stream.Stream.map
的文档,您会看到此方法返回一个新流。如果您需要保留原始列表,请使用此方法并将结果存储在新列表中:
List<...> newList = myList
.stream()
.map(question -> {
question.setQuestionId(UUID.randomUUID().toString());
return question;
})
.collect(Collectors.toList());
如果您只需要修改原始列表,由于List
实施Iterable,您可以使用java.lang.Iterable.forEach:
myList.forEach(question -> question.setQuestionId(UUID.randomUUID().toString()));
答案 1 :(得分:2)
Java中的Streams是 lazy 。这意味着在请求结果之前不会执行任何转换,例如map
。请求整个流结果的常用方法是使用某些终端操作,例如forEach
或collect
。没有终端操作就不会执行任何操作。