【问题标题】:Java list map function not workingJava列表映射功能不起作用
【发布时间】:2016-07-01 11:15:44
【问题描述】:
myList
.stream()
.map((question) -> {
question.setQuestionId(UUID.randomUUID().toString());
return question;
});
下面的java代码没有进入map函数。有人可以指出我在这里做错了什么吗? myList 是一个包含一些元素的 ArrayList。
【问题讨论】:
标签:
java
arraylist
java-stream
【解决方案1】:
如果您查看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()));
【解决方案2】:
Java 中的流是 惰性的。这意味着在请求其结果之前不会执行任何转换,例如map。请求整个流结果的常用方法是使用一些终端操作,例如forEach 或collect。如果没有终端操作,则不会执行任何操作。