[英]is there a way to get values of a map of pair and value by the key pair only?
我有這張地圖static Map<Pair<String,Integer>, Integer> wordTopic = new HashMap<>();
基本上,這是一個矩陣,我想要特定字符串的所有值(該對的鍵).AKA一行的所有值。
這將獲得一行的總和,但我不知道如何獲取該行本身,每個值都以數組或某種形式存在。
wordTopic.entrySet()
.stream()
.filter(e -> e.getKey().getKey().equals(key))
.mapToInt(Map.Entry::getValue)
.sum();
您可以這樣創建一個方法:
int[] getValuesByKey(Map<Pair<String,Integer>, Integer> map, String key) {
return map.entrySet()
.stream()
.filter(e -> e.getKey().getKey().equals(key))
.mapToInt(Map.Entry::getValue)
.toArray();
}
給定一個映射和一個鍵,它將產生所有值,其中輸入鍵等於提供的鍵。
或者,如果您想要一個Integer
數組,則可以執行以下操作:
Integer[] getValuesByKey(Map<Pair<String,Integer>, Integer> map, String key) {
return map.entrySet()
.stream()
.filter(e -> e.getKey().getKey().equals(key))
.map(Map.Entry::getValue)
.toArray(Integer[]::new);
}
或者如果您想檢索列表。
List<Integer> getValuesByKey(Map<Pair<String,Integer>, Integer> map, String key) {
return map.entrySet()
.stream()
.filter(e -> e.getKey().getKey().equals(key))
.map(Map.Entry::getValue)
.collect(Collectors.toCollection(ArrayList::new));
}
您只需要像這樣在流的末尾添加一個收集器:
wordTopic.entrySet()
.stream()
.filter(e -> e.getKey().getKey().equals(key))
.mapToInt(Map.Entry::getValue)
.collect(Collectors.toList());
然后你去
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.