为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以仅用一行来执行此操作?

是否可以仅用一行来执行此操作?

阿波罗的战车 2023-08-16 10:04:13
假设列表firstName已经被初始化。List<String> firstName= new ArrayList<String>();firstName.add("John");firstName.add("Peter");firstName.add("Foo");是否可以使用它仅用一行代码填充另一个列表?我不知道如何用比以下更少的行来完成它:List<FullName> fullName= new ArrayList<FullName>();firstName.stream().forEach( n -> fullName.add(new FullName(n, "SomeSurname")));
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

map这可以通过使用而不是forEach创建FullNames,然后Collectors.toList创建列表来轻松完成。


firstName.stream().map(n -> new FullName(n, "SomeSurname")).collect(Collectors.toList());

它不仅是一个语句,如果存在并行流的可能性,最好这样做,以避免并发问题。此外,不希望使用forEach通常用于副作用的 ,作为主要目的,这里将其收集到列表中。


另外,您不必担心它只有一行。可读性比吝啬行数更重要。即使它是多行,它也已被做成一个声明。通常,Java 流上的每个操作都分隔在自己的行上。


firstName.stream()

    .map(n -> new FullName(n, "SomeSurname"))

    .collect(Collectors.toList());

如果您愿意,您甚至可以将初始列表的创建合并到单个语句中。


List<FullName> fullName = Arrays.asList("John", "Peter", "Foo").stream()

    .map(n -> new FullName(n, "SomeSurname"))

    .collect(Collectors.toList());


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信