假设列表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());
添加回答
举报
0/150
提交
取消