当前位置: 首页 > 知识库问答 >
问题:

collectors.tomap()keyMapper--更简洁的表达式?

谯英彦
2023-03-14
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()));
Person::getLast

共有1个答案

锺高翰
2023-03-14

您可以使用lambda:

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

或者,更简洁地说,您可以使用:::

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

您可以使用等效的lambda代替function.identity:

Collectors.toMap(Person::getLast, p -> p)
 类似资料:
  • 问题内容: 我正在尝试在以下调用中为“ keyMapper”函数参数提供更简洁的表达式: 看来我应该可以使用lambda表达式内联它,但是我无法提出一个可以编译的表达式。(我对lambda还是很陌生,所以这不足为奇。) 谢谢。 ->更新: 如已接受的答案中所述 是我一直在寻找的东西,也是我尝试过的东西。但是,问题是夜间构建的Eclipse 4.3的BETA_8是晚上出现的问题–它标记为错误。从命令

  • 嗨,我有一个代码块,它将一种窗口对象的列表转换为另一种,并将其填充到一个地图中,由ID键控。可能有许多具有相同id但具有不同名称和属性的对象实例。我所做的是做一个列表[W1(1,2,3),W1(2,3,4),W2(1,3,4)...]并将其转换为映射[键W1,值(1,2,3),(2,3,4)键W2,....] 我想知道我是否可以使用流和lambdas来崩溃这个。 list.stream().col

  • 我目前有一个正在工作的谷歌脚本,它在谷歌游泳池化学监测表中读取仪表板上的值。人们将提交一个表单,如果这些数字大于或小于一个设定的数字,它将发送一封带有特定消息的电子邮件。 这工作很好,但如果有多个数字是关闭的,我会收到多个电子邮件,这是恼人的。 然后使用email-mailapp.sendeMail(emailAddress,subject,Message1+Message2...); 但我觉得这

  • 如何在不创建其他对象的情况下用Java压缩这些代码? 和其他语言一样 无需修改任何类或使用任何模式(生成器或构造函数)。我的意思是为了写更少的代码

  • 问题内容: 我的两难选择:我正在向函数传递一个字符串,然后在该字符串上执行许多正则表达式操作。逻辑是,如果第一个正则表达式中存在匹配项,则做一件事。如果不匹配,请检查第二个是否匹配,然后执行其他操作;如果不匹配,请执行其他操作,依此类推。我可以做这样的事情: 但是,这感觉不必要的冗长,通常情况下,这意味着我有更好的方法可以忽略或不知道。 是否有人建议采用更好的方法(从代码外观的角度,内存使用的角度

  • 问题内容: 下面的代码检查和是不同的值(变量,,只能有值,或),并且如果是这样,套到第三个字符: 能否以更简洁,可读和有效的方式做到这一点? 问题答案: 我假设您的代码中的三种情况之一成立。在这种情况下,该集合将由单个元素组成,由返回。 编辑: 正如Raymond Hettinger在评论中所建议的那样,您还可以使用元组拆包从集合中提取单个元素: