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

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

如何在一次操作中從 Hashmap 中獲取多個鍵的多個值?

如何在一次操作中從 Hashmap 中獲取多個鍵的多個值?

皈依舞 2023-07-13 14:09:46
我想使用 獲取多個鍵的值HashMap,例如:HashMap<Integer, String> map = new HashMap<Integer, String>();map.put(1, "Hello");map.put(2, "World");map.put(3, "New");map.put(4, "Old");現在我想組合1和 的值2并創建一個List<String>輸出。我可以通過 2 次獲取操作或創建一個接受鍵列表并返回值列表的函數來完成此操作。但是是否有任何內置的util函數可以完成相同的工作?
查看完整描述

3 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

您可以使用Stream

List<Integer>?keys?=?List.of(1,2);
List<String>?values?=?
????keys.stream()
????????.map(map::get)
????????.filter(Objects::nonNull)?//?get?rid?of?null?values
????????.collect(Collectors.toList());

這將導致List

[Hello,?World]


查看完整回答
反對 回復 2023-07-13
?
慕標琳琳

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

您可以獲取Set包含鍵的輸入來查詢和使用流操作Stream#filter,并Stream#map過濾和映射結果,最后將值收集到列表中:

HashMap<Integer,?String>?map?=?new?HashMap<Integer,?String>();
map.put(1,?"Hello");
map.put(2,?"World");
map.put(3,?"New");
map.put(4,?"Old");

Set<Integer>?keys?=?Set.of(1,?2);

List<String>?values?=?map.entrySet()
?????????????????????????.stream()
?????????????????????????.filter(ent?->?keys.contains(ent.getKey()))
?????????????????????????.map(Map.Entry::getValue)
?????????????????????????.collect(Collectors.toList());
System.out.println(values);

輸出:

[Hello,?World]


查看完整回答
反對 回復 2023-07-13
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

IntStream.of(1, 2)
        .map(map::get)
        .collect(Collectors.toList());


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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