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

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

迭代映射列表 (List<Map<Integer,String>>) 并查找特定值?

迭代映射列表 (List<Map<Integer,String>>) 并查找特定值?

智慧大石 2021-11-24 15:41:16
我有一個地圖列表。List<Map<Integer,String>> lines. 我希望遍歷列表和所有映射,只查看特定的鍵值對,試圖找到匹配的字符串值 - “hi”。示例:我只對查看特定鍵范圍 5-10 的條目集并檢查匹配值感興趣。下面是我計劃的。迭代列表的方法檢查每個地圖是否有任何匹配項。有沒有更好或更清潔/更有效的方法呢?//basic logicfor(Map<Integer,String> map : lines){   return map.entrySet().stream()     .filter(e -> 11 > e.getKey().intValue() && e.getKey().intValue() >= 5)     .anyMatch(entry -> entry.getValue().equalsIgnoreCase("hi"));}
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

由于您已經在使用流,您還可以流式傳輸列表:

return lines.stream()
            .flatMap(map -> map.entrySet().stream())
            .filter(entry -> 11 > entry.getKey() && entry.getKey() >= 5)
            .anyMatch(entry -> entry.getValue().equalsIgnoreCase("hi"));

這將返回true如果有地圖在列表中包含了5和10(含)之間的一個關鍵條目和“喜”(不區分大小寫)的值,并且將返回false,否則。這是我對您最初意圖的最佳猜測;如果我不正確,請告訴我。


查看完整回答
反對 回復 2021-11-24
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

如果地圖相當大,我會使用user2478398的評論。如果可能,請使用SortedMapNavigableMap并且您可以輕松申請NavigableMap#subMap。然后Stream看起來像這樣:

lines.stream()
     .flatMap(m -> m.subMap(5, 11).values().stream())
     .anyMatch("hi"::equalsIgnoreCase);


查看完整回答
反對 回復 2021-11-24
  • 2 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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