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

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

為什么這個 Function<List<Person>,String> 不起作用?

為什么這個 Function<List<Person>,String> 不起作用?

慕哥6287543 2023-04-13 17:10:08
我正在研究功能,我已經嘗試過了Function<Person,String> byName = Person::getName;System.out.println( byName.apply(list.get(1)) );這有效并在索引 1 處打印了該人的姓名;但現在我想創建Function<List<Person>,String>以遍歷列表中的所有人Function<List<Person>,String> allNames = a -> a.forEach(e-> e.getName());System.out.println(allNames.apply(list));它拋出一個錯誤,因為“void cannot be converted to String”
查看完整描述

2 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

forEach()接受一個消費者,該消費者將一個函數應用于每個元素。它不返回任何東西,所以你不能在調用中使用它System.out.println()。如果你覺得你想從 a返回一些東西,如果有必要,forEach()你很可能想要,然后調用。stream()map()

但是,更接近您的第一個示例,您可能想要調用forEach()您的列表,然后在每個元素上打印出該函數的結果:

Function<Person, String> byName = Person::getName;
list.forEach(e -> System.out.println(byName.apply(e.getName())));


查看完整回答
反對 回復 2023-04-13
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

功能包有這兩個功能接口

  1. 供應商

  2. 消費者

根據文檔->

如果 Supplier 什么都不帶,但會返回一些東西,請使用 Supplier。

如果 Consumer 需要一些東西,但不返回任何東西,請使用 Consumer。

以下片段解決了我的問題->

    Consumer<List<Person>> allNames = (a) -> a.forEach(e -> System.out.print(e.getName()+" "));
    allNames.accept(list);


查看完整回答
反對 回復 2023-04-13
  • 2 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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