【问题标题】: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。请求整个流结果的常用方法是使用一些终端操作,例如forEachcollect。如果没有终端操作,则不会执行任何操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 2023-01-29
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 2012-04-17
      • 2012-03-30
      相关资源
      最近更新 更多