HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
hm.put(1,10);
hm.put(2,45);
hm.put(3,100);
Iterator<Integer> it = hm.keySet().iterator();
Integer fk = it.next();
Integer max = hm.get(fk);
while(it.hasNext()) {
Integer k = it.next();
Integer val = hm.get(k);
if (val > max){
max = val;
fk=k;
}
}
System.out.println("Max Value "+max+" is associated with "+fk+" key");
public class NewClass4 {
public static void main(String[] args)
{
HashMap<Integer,Integer>map=new HashMap<Integer, Integer>();
map.put(1, 50);
map.put(2, 60);
map.put(3, 30);
map.put(4, 60);
map.put(5, 60);
int maxValueInMap=(Collections.max(map.values())); // This will return max value in the Hashmap
for (Entry<Integer, Integer> entry : map.entrySet()) { // Itrate through hashmap
if (entry.getValue()==maxValueInMap) {
System.out.println(entry.getKey()); // Print the key with max value
}
}
}
}
16条答案
按热度按时间e7arh2l61#
1.使用流
2.将collections.max()与lambda表达式一起使用
3.使用带有方法引用的流
4.使用collections.max()
5.使用简单迭代
dnph8jn42#
基本上,您需要遍历Map的条目集,同时记住“当前已知的最大值”和与其相关联的键(或者只是包含两者的条目。)
例如:
xuo3flqw3#
为了完整起见,这里提供了一种java-8方法
或
或
relj7zay4#
给定Map
hashmap =新hashmap<>();
获取最大值为的所有Map项。
您可以在筛选器中使用以下任何方法来获取最小值集或最大值集的相应Map项
如果你只想得到过滤器的关键Map
如果要获取筛选Map的值
如果要在列表中获取所有此类密钥:
如果要在列表中获取所有此类值:
nuypyhwy5#
返回可选值的答案,因为如果Map为空,则可能没有最大值:
map.entrySet().stream().max(Map.Entry.comparingByValue()).map(Map.Entry::getKey);
aoyhnmkz6#
一个使用java-8的简单的单行程序
kgqe7b3p7#
我有两种方法,用这个mé获取最大值的键的方法:
例如,使用以下方法获取具有最大值的条目:
使用java 8,我们可以得到一个包含最大值的对象:
wrrgggsh8#
你可以这样做
r55awzrz9#
此代码将以最大值打印所有键
gv8xihay10#
这个解决方案行吗?
x7yiwoj411#
java8获取最大值的所有键的方法。
还可以使用
parallelStream()
而不是stream()
oxcyiej712#
qrjkbowd13#
简单易懂。在下面的代码中,maxkey是保存最大值的键。
qc6wkl3g14#
在我的项目中,我使用了jon和fathah解决方案的一个稍加修改的版本。如果有多个条目具有相同的值,则返回找到的最后一个条目:
ars1skjm15#
下面是如何通过定义适当的
Comparator
: