例如,给定数据:
2 : 4
1 : 3
5 : 2
该函数将返回2,因为其值(4)为最大值。我在做:
let mut max_val = 0;
let mut max_key = "";
for (k, v) in a_hash_map.iter() {
if *v > max_val {
max_key = k;
max_val = *v;
}
}
有没有更好,更快或更简单的方法来做到这一点?
最佳答案
遍历哈希图中的所有键-值对,将它们与值进行比较,仅保留最大值的键:
use std::collections::HashMap;
fn example<K, V>(a_hash_map: &HashMap<K, V>) -> Option<&K>
where
V: Ord,
{
a_hash_map
.iter()
.max_by(|a, b| a.1.cmp(&b.1))
.map(|(k, _v)| k)
}
fn main() {
let map: HashMap<_, _> = vec![(2, 4), (1, 3), (5, 2)].into_iter().collect();
dbg!(example(&map));
}
也可以看看:关于rust - 如何获得与Rust HashMap的最大值关联的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62525693/