【发布时间】:2015-01-10 09:18:19
【问题描述】:
假设我们有这段无聊的代码,我们都必须使用:
ArrayList<Long> ids = new ArrayList<Long>();
for (MyObj obj : myList){
ids.add(obj.getId());
}
切换到 Java 8 后,我的 IDE 告诉我可以用 collect call 替换这段代码,它会自动生成:
ArrayList<Long> ids = myList.stream().map(MyObj::getId).collect(Collectors.toList());
但是它给了我这个错误:
Steam中的collect(java.util.stream.Collector)不能应用于:(java.util.stream.Collector, capture, java.util.List>)
我尝试强制转换参数,但它给了我未定义的 A 和 R,并且 IDE 没有提供更多建议。
我很好奇在这种情况下您如何使用collect call,但我找不到任何可以正确指导我的信息。有人能解释一下吗?
【问题讨论】:
标签: java java-8 java-stream collect