Collectors.toMap()keyMapper —更简洁的表达吗?

我正在尝试在以下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表达式内联它,但是我无法提出一个可以编译的表达式。(我对lambda还是很陌生,所以这不足为奇。)

谢谢。

->更新:

如已接受的答案中所述

Person::getLast

是我一直在寻找的东西,也是我尝试过的东西。但是,问题是夜间构建的Eclipse

4.3的BETA_8是晚上出现的问题–它标记为错误。从命令行编译时(我应该在发布之前完成该工作)。因此,该到eclipse.org提交错误了。

谢谢。

回答:

您可以使用lambda:

Collectors.toMap(p -> p.getLast(), Function.identity())

或者,更简洁,您可以使用方法参考使用::

Collectors.toMap(Person::getLast, Function.identity())

而不是Function.identity,您可以简单地使用等效的lambda:

Collectors.toMap(Person::getLast, p -> p)

如果使用Netbeans,则每当匿名类可以被lambda替换时,您都将获得提示。

以上是 Collectors.toMap()keyMapper —更简洁的表达吗? 的全部内容, 来源链接: utcz.com/qa/415465.html

回到顶部