我有这张地图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();
答案 0 :(得分:4)
您可以创建一个方法:
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();
}
给出一个map和一个键将产生所有值,其中入口键等于提供的键。
或者如果你想要一个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));
}
答案 1 :(得分:0)
你只需要在流的末尾添加一个收集器,如:
wordTopic.entrySet()
.stream()
.filter(e -> e.getKey().getKey().equals(key))
.mapToInt(Map.Entry::getValue)
.collect(Collectors.toList());
然后你去