第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

可選<CustomizedObject> 獲取CustomizedObject 中列表的第一個(gè)元素

可選<CustomizedObject> 獲取CustomizedObject 中列表的第一個(gè)元素

一只名叫tom的貓 2023-09-13 17:16:53
我不知道該怎么做class Department {    String deptName;    List<Person> employees;}class Person {    String personName;}問題陳述是獲取在特定部門工作的人員的名字。該部門可以是可選的。這就是我的方法的樣子 -String getFirstPerson(Optional<Department> department, String defaultName) {// TODO: }我知道執(zhí)行此操作的傳統(tǒng)方法,但希望看到一些 Java 8 + lambda 方法來簡化此操作。這里仍然是新手 - 所以如果我沒有使用正確的格式,請(qǐng)?jiān)彙N疫€有一個(gè)默認(rèn)名稱可以使用,以防我們找不到該值。PS 我知道將Optional 作為方法參數(shù)發(fā)送不是最佳實(shí)踐。這不是實(shí)際的代碼。我只是想簡化它。
查看完整描述

3 回答

?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以使用mapon 函數(shù)Optional獲取員工列表,然后使用streamget the name 或 return defaultName。即使 ifOptional為空,您也會(huì)得到 defaultName

String getFirstPerson(Optional<Department> department, String defaultName) { 
  return department.map(d->d.getEmployees().stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName));
}

如果您有機(jī)會(huì)上nullgetEmployees,可以使用以下方法

department.map(Department::getEmployees)
          .filter(Objects::nonNull)
          .map(emp->emp.stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName)


查看完整回答
反對(duì) 回復(fù) 2023-09-13
?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

一種簡化的方法可以用于emptyList缺勤部門或 nullable employees

String getFirstPerson(Optional<Department> department, String defaultName) {    return department.map(Department::getEmployees)
            .orElse(Collections.emptyList()) // get rid of this ensuring non null List
            .stream()
            .map(Person::getPersonName)
            .findFirst()
            .orElse(defaultName);
}


查看完整回答
反對(duì) 回復(fù) 2023-09-13
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

實(shí)際上在:

department.map(Department::getEmployees)
??????????.filter(Objects::nonNull)
??????????.map(emp->emp.stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName)

我們不必檢查非空,因?yàn)槿绻麊T工為空則.map(Department::getEmployees)返回。正確的答案是沒有冗余過濾器:

department.map(Department::getEmployees)
??????????.map(emp->emp.stream().map(Person::getPersonName).findFirst().orElse(defaultName)).orElse(defaultName)

或者:

department.map(Department::getEmployees)
??????????.map(List::stream)
??????????.map(Stream::findFirst)
??????????.flatMap(Functions.identity())
??????????.map(Person::getPersonName)
??????????.orElse(defaultName);


查看完整回答
反對(duì) 回復(fù) 2023-09-13
  • 3 回答
  • 0 關(guān)注
  • 165 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)