我正在玩Java 8中的地图/流,我没有看到转换以下Java 7代码的简单方法。好像我无法访问方法中的方法。如果我使用.map()作为中间步骤,我将无法访问外部变量(" item")。我错过了什么吗?
private void test(final Collection<SomeObject> items){
// Java 7
Map<SomeKey, List<SomeObject>> map = Maps.newHashMap();
for (SomeObject item : items){
SomeKey someKey = item.someMethod().getKey();
map.put(someKey,item);
}
// Java 8
Map<SomeKey, List<SomeObject>> map2 =
items.stream().collect(Collectors.groupingBy(item::someMethod::getKey));
}
谢谢!
答案 0 :(得分:0)
正确的Java 8表达式应为:
Map<SomeKey, List<SomeObject>> map2 =
items.stream().collect(Collectors.groupingBy(item -> item.someMethod().getKey()));