亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以僅用一行來執行此操作?

是否可以僅用一行來執行此操作?

阿波羅的戰車 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通常用于副作用的 ,作為主要目的,這里將其收集到列表中。


另外,您不必擔心它只有一行??勺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());


查看完整回答
反對 回復 2023-08-16
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號