gpt4 book ai didi

java - 如何在Java中查找与最大值相关的键

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:45 26 4
gpt4 key购买 nike

好的,我有

Set<String> s;
HashMap<String, Double> hm;

而且,我想在 hm 中找到与集合 s 中所有可能的 key(候选)中的最大值相关的键。

下面的方法是我已经拥有的方法,它可以帮助我找到与一个值相关的多个键。我可能会使用Collections.Max(hm.values())来获取最大值

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
Set<T> keys = new HashSet<T>();
for (Entry<T, E> entry : map.entrySet()) {
if (Objects.equals(value, entry.getValue())) {
keys.add(entry.getKey());
}
}
return keys;
}

您可以建议的“简洁”解决方案是什么?

过去几个月我一直在使用Python,现在用Java处理各种 map 而不是字典真是太不方便了。

<小时/>

关于这个问题我想评论的是,在 Java 中以某种“更智能”的方式简化下面的代码。

import com.google.common.collect.Sets;

double maxVal = 0.0;

for(String candidate : s){
if(hm.get(candidate) >= maxVal){
maxVal = hm.get(candidate);
}
}
Set<String> subset = Sets.intersection(set, getKeysByValue(hm, maxVal));

可能的类似 Python 的实现(列表理解)是

subset = set.intersection(s, getKeysByValue(hm, Collections.max([hm.get(item) for item in s]))

最佳答案

所以您想检查 HashMap 的值,如果它对应于集合中的某个条目,那么该键和值对就会添加到您的压缩 HashMap 中?

在 Python 中

def get_matching_values(my_set, my_dict):
new_dict = {}
for key, value in my_dict.iteritems():
if value in my_set:
new_dict[key] = value

return new_dict

或者作为字典理解

def get_matching_values(my_set, my_dict):
return dict((key, value) for key, value in my_dict.iteritems() if value in my_set)

关于java - 如何在Java中查找与最大值相关的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com