【问题标题】:What is the correct way to use lambda expression in .stream() and in Collectors?在 .stream() 和 Collectors 中使用 lambda 表达式的正确方法是什么?
【发布时间】:2016-11-03 11:17:17
【问题描述】:
   Map<String, EmailAddress> mapAliasAddress;
        mapAliasAddress = Files.lines(Paths.get("emails.csv"))
                .map(s->s.split(","))
                .collect(Collectors.groupBy(s->s[1], new EmailAddress(s->s[1],s->[0])));// first is the alias, second is the email address

这是 EmailAddress 一个对象类,它接受两个参数(别名和电子邮件地址)

【问题讨论】:

  • 你想得到什么结果?
  • 请勿发布图片。 Collectors.group 是什么?
  • 语法错误有编译错误
  • 收集器的第一个参数你做对了。
  • 这个表达式new EmailAddress(s-&gt;s[1],s-&gt;[0])应该是这样的:s -&gt; new EmailAddress(s[1],s[0])

标签: java lambda java-8 java-stream


【解决方案1】:

我认为这会做你想要的:

Map<String, EmailAddress> mapAliasAddress;
mapAliasAddress = Files.lines(Paths.get("emails.csv"))
            .map(s->s.split(","))
            .collect(Collectors.toMap(s -> s[1], s -> new EmailAddress(s[1], s[0]);

【讨论】:

  • 收集到列表并将其存储为Map&lt;String, EmailAddress&gt; 不起作用。
  • 不正确看到目标输出是一个 Map 但你的 collect() 将返回一个 List
  • 作品 :) @DanilGaponov
猜你喜欢
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多