如何从Java中的哈希映射获取所有最小值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何从Java中的哈希映射获取所有最小值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2044字,纯文字阅读大概需要3分钟。
内容图文
![如何从Java中的哈希映射获取所有最小值](/upload/InfoBanner/zyjiaocheng/732/8b32bc8cc8874816a6ad2714be054dae.jpg)
我有一个Hash Map,其中包含Request类型的Keys对象和Integer类型的值.我使用以下代码迭代地图并获取所有最小值,然后将其键添加到列表中.我强调所有因为键是唯一的但值可以是重复的,因此可能有多个具有最小值的地图元素.
但是,这段代码只给了我一个这样的元素,即它通过迭代找到的第一个元素,即使我知道还有更多元素.例如,让我们说地图有以下请求 – 即密钥(我给出请求ID):3 | 5 | 2和它们各自的值是:8 | 4 |因此,在这个例子中,我们有两个最小元素,即两个共享最小值的元素,ID 5和ID 2,两者都是值4.代码将只向我的列表中添加ID为5的元素,即是,他们中的第一个.
我必须注意,有一个类似的线程(Key for maximum value in Hashtable),但提供的解决方案在我的情况下不起作用.
这是代码:
Entry<Request, Integer> min = null;
List<Request> minKeyList = new ArrayList<Request>();
for(Entry<Request, Integer> entry : this.map.entrySet()) {
if (min == null || min.getValue() > map.getValue()) {
min = entry;
minKeyList.add(entry.getKey());
}
任何建议或解释为什么会发生这种情况将不胜感激.
编辑:新方法
好吧,我找到了解决方案.它不优雅,但它的工作原理.这是代码.
// list for finding the min value
List<Integer> minValList = new ArrayList<Integer>();
// List for keeping the keys of the elements with the min value
List<Request> minKeyList = new ArrayList<Request>();
// scan the map and put the values to the value list
for(Entry<Request, Integer> entry : this.map.entrySet()) {
minValList.add(entry.getValue());
}
// scan the map
for(Entry<Request, Integer> entry: this.map.entrySet()) {
// find the min value
if(entry.getValue() == Collections.min(minValList)) {
// add the keys of the elements with the min value at the keyList
minKeyList.add(entry.getKey());
}
}
解决方法:
我建议你分两步:
>找到最小值,以分钟为单位存储
>查找值等于min的所有元素
这是一个代码示例:
// find minimum first
int min = Integer.MIN_VALUE;
for(Entry<Request, Integer> entry : this.map.entrySet()) {
min = Math.min(min, map.getValue())
}
// add all elements that have a value equal to min
List<Request> minKeyList = new ArrayList<Request>();
for(Entry<Request, Integer> entry : this.map.entrySet()) {
if(min.getValue() == min) {
minKeyList.add(entry.getKey());
}
}
内容总结
以上是互联网集市为您收集整理的如何从Java中的哈希映射获取所有最小值全部内容,希望文章能够帮你解决如何从Java中的哈希映射获取所有最小值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。