我想使用 獲取多個鍵的值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]

慕標琳琳
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]
添加回答
舉報
0/150
提交
取消