【发布时间】:2016-06-08 19:56:16
【问题描述】:
filter()、collect() 和 foreach() 不能在单个语句而不是多个语句中使用吗?
我有一张地图,需要根据某些条件进行过滤,并为内容设置一些值并返回地图。我的当前如下所示,但我希望所有 3 个都包含在单个语句中。
地图 inputMap(包含所有信息)
Map<String, Person> returnMap;
returnMap = map.entrySet().stream()
.filter(p -> p.getValue().getCourse() == 123)
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
returnMap.entrySet().stream().forEach((entry) -> {
Person person= entry.getValue();
person.setAction("update");
person.setLastUpdatedTime(new Date());
});
这个可以转换成,
Map<String, Person> returnMap;
returnMap = map.entrySet().stream()
.filter(p -> p.getValue().getCourse() == 123)
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()))
.forEach((entry) -> {
Person person= entry.getValue();
person.setAction("update");
person.setLastUpdatedTime(new Date());
});
(此代码不起作用)
【问题讨论】:
标签: java-8 java-stream