如何在 Java 映射中找到最大值
原文:https://www.studytonight.com/java-examples/how-to-find-maximum-value-in-java-map
在本文中,我们将学习对 Java 映射的元素进行排序。映射以键值对的格式存储数据,除此之外,它还存储在随机的位置,这就是为什么在 Java 的映射中很难找到最大值的原因。
在 Java 映射中寻找最大价值的挑战
- Java 中的 Map 将值存储在随机位置。
- 因为它以键值格式存储数据,所以有必要决定应该考虑哪个因素进行比较。
让我们通过一个 Java 中使用Map
的程序来理解。在下面给出的程序中,我们创建了一个Map
,它将以键值格式存储每个相应课程的价格。
import java.util.*;
public class StudyTonight
{
public static void main(String args[])
{
Map<String,Integer> coursePrice = new HashMap<>();
coursePrice.put("Java",5000);
coursePrice.put("Python",3000);
coursePrice.put("CPP",4000);
coursePrice.put("Android",8000);
System.out.println(coursePrice);
}
}
不要忘记导入
java.util.*;
包,否则编译器会给出错误。
{Java=5000,CPP=4000,Python=3000,Android=8000}
现在,很明显会想哪道菜最便宜?哪门课贵?
在编程世界中,我们通过简单地找到最大值和最小值来解决这些情况。在讨论实际解决方案之前,让我们讨论迭代解决方案。
求映射最大值的迭代解法
在这个程序中,我们创建了一个映射类型的空条目,然后迭代映射的所有值。每当我们得到一个更大的值或空值时,我们就把它赋给 Entry,并在最后简单地打印 Entry 的值。
import java.util.*;
public class StudyTonight
{
public static void main(String args[])
{
Map<String,Integer> coursePrices = new HashMap<>();
Map.Entry<String,Integer> maxPrice = null;
coursePrices.put("Java", 5000);
coursePrices.put("Python", 3000);
coursePrices.put("CPP", 4000);
coursePrices.put("Android", 8000);
for(Map.Entry<String,Integer> price:coursePrices.entrySet())
{
if (maxPrice == null || price.getValue().compareTo(maxPrice.getValue()) > 0)
{
maxPrice = price;
}
}
System.out.println("Maximum price is: "+maxPrice.getValue());
}
}
最高限价为:8000
在映射中查找最大值的示例
在这里,我们简单地使用Map.values()
传递了 Map 的所有值,其他的工作由 Java 中的Collections
类自动完成。
本示例将打印映射上显示的最高价格。
import java.util.*;
public class StudyTonight
{
public static void main(String args[])
{
Map<String,Integer> coursePrice = new HashMap<>();
coursePrice.put("Java",5000);
coursePrice.put("Python",3000);
coursePrice.put("CPP",4000);
coursePrice.put("Android",8000);
System.out.println("maximum price is : "+ Collections.max(coursePrice.values()));
}
}
最高限价为:8000
如果我们想找到最大映射键而不是值呢?
在这种情况下,我们只需要传递方法 Map.keySet()而不是 Map.values(),下面给出了实现这种情况的代码,其中所有课程价格都是键,课程名称都是值。所以,我们在 Collection.max()方法中传递了 Map.keySet()。
import java.util.*;
public class StudyTonight
{
public static void main(String args[])
{
Map<Integer,String> coursePrice = new HashMap<>();
coursePrice.put(5000,"Java");
coursePrice.put(3000,"Python");
coursePrice.put(4000,"CPP");
coursePrice.put(8000,"Android");
System.out.println("maximum price is : "+ Collections.max(coursePrice.keySet()));
}
}
最高限价为:8000
结论:
在本文中,我们学习了使用Collections
类或传统的迭代比较方法在 Java Map 中查找最大值。Map 为访问时间提供 O(1),但为从中找到最大元素提供 O(n)。