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

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

如何使用 java 流過(guò)濾 List<String,Object> 集合?

如何使用 java 流過(guò)濾 List<String,Object> 集合?

qq_笑_17 2022-06-04 16:40:16
我有List<String, Person> generalList作為一個(gè)列表。在 Person 下有 Customer 對(duì)象,在 Customer 下還有 1 個(gè)列表,名為 Id我想在對(duì)象下過(guò)濾這個(gè)嵌套的 IdList 但它不起作用。我嘗試使用 flatMap 但此代碼不起作用String s = generalList.stream().flatMap(a -> a.getCustomer().getIdList().stream()).filter(b -> b.getValue().equals("1")).findFirst().orElse(null);我希望輸出為 String 或 Customer 對(duì)象編輯:我的原始容器是地圖,我正在過(guò)濾 Map to List解釋。Map<String, List<Person> container;List<Person> list = container.get("A");String s = list.stream().flatMap(a -> a.getCustomer().getIdList().stream()).filter(b -> b.getValue().equals("1")).findFirst().orElse(null);這是人public class Person{private Customer customer;public Customer getCustomer (){    return customer;}}和客戶(hù)public class Customer {private Id[] idList;/*getter setter*/}和身份證public class Id {private String value;/*getter setter*/}
查看完整描述

2 回答

?
智慧大石

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

您可能正在尋找以下map操作:

String s = list.stream()
        .flatMap(a -> a.getCustomer().getIdList().stream())
        .filter(b -> b.getValue().equals("1"))
        .findFirst()
        .map(Id::getValue) // map to the value of filtered Id
        .orElse(null);

這相當(dāng)于(只是為了澄清)

String valueToMatch = "1";String s = list.stream()
        .flatMap(a -> a.getCustomer().getIdList().stream())
        .anyMatch(b -> b.getValue().equals(valueToMatch))
        ? valueToMatch : null;


查看完整回答
反對(duì) 回復(fù) 2022-06-04
?
呼喚遠(yuǎn)方

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

更新 2此解決方案直接適用于 Person 對(duì)象列表:


String key = "1";

List<Person> list = container.get("A");

String filteredValue = list.stream()

    .flatMap(person -> Arrays.stream(person.getCustomer().getId())

    .filter(id -> id.getValue().equals(key)))

    .findFirst().get().getValue();

使用地圖的舊答案由于您只對(duì)地圖的值感興趣,因此您應(yīng)該對(duì)它們進(jìn)行流式傳輸,而在 flatMap 中,我不僅在getId()列表中獲得了流,而且還直接對(duì)其進(jìn)行了過(guò)濾。因此,如果我正確理解了您的代碼結(jié)構(gòu),這應(yīng)該可以


String key = "1";


 String filteredValue =  map.values().stream()

     .flatMap(list -> list.stream()

     .flatMap(person -> Arrays.stream(person.getCustomer().getId())

     .filter(id -> id.getValue().equals("1"))))

     .findFirst().get().getValue();

更新以調(diào)整已編輯的問(wèn)題


查看完整回答
反對(duì) 回復(fù) 2022-06-04
  • 2 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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