【发布时间】:2013-10-15 19:11:56
【问题描述】:
我正在尝试为以下Collectors.toMap() 调用中的“keyMapper”函数参数提出一个更简洁的表达式:
List<Person> roster = ...;
Map<String, Person> map =
roster
.stream()
.collect(
Collectors.toMap(
new Function<Person, String>() {
public String apply(Person p) { return p.getLast(); }
},
Function.<Person>identity()));
似乎我应该能够使用 lambda 表达式内联它,但我想不出一个可以编译的。 (我对 lambdas 很陌生,所以这不足为奇。)
谢谢。
--> 更新:
如已接受的答案中所述
Person::getLast
是我一直在寻找的,也是我尝试过的。然而,Eclipse 4.3 的 BETA_8 nightly build 是个问题——它标记为错误。从命令行编译时(我应该在发布之前完成),它起作用了。因此,是时候向 eclipse.org 提交错误了。
谢谢。
【问题讨论】:
-
请注意,静态导入 Collectors.toMap 会使表达式更短,不过 NetBeans 似乎并没有为我导入这些。
-
刚刚偶然发现了这个问题。你的问题不仅是Eclipse 4.3,还有u112之前的JDK 8,也有类似的问题。 HTH。
标签: java collections lambda java-8 java-stream