簡體   English   中英

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

[英]How to get multiple values for multiple keys from Hashmap in a single operation?

我想使用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");

現在我想組合12值並創建List<String>輸出。 我可以執行此操作2次獲取操作或創建一個獲取鍵列表並返回值列表的函數。

但是有沒有內置的util函數可以完成相同的工作?

你可以使用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]

您可以使用輸入Set來查詢和使用流操作Stream#filterStream#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]
IntStream.of(1, 2)
        .map(map::get)
        .collect(Collectors.toList());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM