假設列表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通常用于副作用的 ,作為主要目的,這里將其收集到列表中。
另外,您不必擔心它只有一行??勺x性比吝嗇行數更重要。即使它是多行,它也已被做成一個聲明。通常,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
提交
取消