如何查找 Map 中的最大值

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在 Java 中,Map 数据结构用于存储键值对。由于 Map 中的数据并不是按顺序存储的,因此找到其中的最大值是一个具有挑战性的任务。在本实验中,你将学习如何使用迭代方法和 Collections 类来找到 Java Map 中的最大值。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/DataStructuresGroup(["`Data Structures`"]) java(("`Java`")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["`Object-Oriented and Advanced Concepts`"]) java(("`Java`")) -.-> java/SystemandDataProcessingGroup(["`System and Data Processing`"]) java/DataStructuresGroup -.-> java/collections_methods("`Collections Methods`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("`Classes/Objects`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashmap("`HashMap`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/iterator("`Iterator`") java/SystemandDataProcessingGroup -.-> java/math_methods("`Math Methods`") subgraph Lab Skills java/collections_methods -.-> lab-117436{{"`如何查找 Map 中的最大值`"}} java/classes_objects -.-> lab-117436{{"`如何查找 Map 中的最大值`"}} java/hashmap -.-> lab-117436{{"`如何查找 Map 中的最大值`"}} java/iterator -.-> lab-117436{{"`如何查找 Map 中的最大值`"}} java/math_methods -.-> lab-117436{{"`如何查找 Map 中的最大值`"}} end

创建 Java Map

创建一个 Java 程序,生成一个以键值对格式存储每门课程价格的 Map

import java.util.*;

public class MaxValueInMap {
    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);
    }
}

保存文件并使用以下命令运行程序:

javac MaxValueInMap.java && java MaxValueInMap

通过迭代查找最大值

遍历 Map 中的所有值以找到最大值。为此,创建一个 Map 类型的空 Entry,然后遍历 Map 中的所有值。每当遇到更大的值或空值时,将其赋值给 Entry,最后直接打印 Entry 的值。

import java.util.*;

public class MaxValueInMap {
    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());
    }
}

保存文件并使用以下命令运行程序:

javac MaxValueInMap.java && java MaxValueInMap

使用 Collections.max() 查找最大值

在这里,我们可以使用 Collections.max() 方法来查找最大值。Collections.max() 方法会查找并返回集合中存在的最大元素。在本例中,我们将传递 Map.values()

import java.util.*;

public class MaxValueInMap {
    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()));
    }
}

保存文件并使用以下命令运行程序:

javac MaxValueInMap.java && java MaxValueInMap

使用 Collections.max() 查找最大键

如果我们想要查找最大键而不是值,那么需要将 Map.keySet() 方法而不是 Map.values() 传递给 Collections.max() 方法。在本例中,所有课程价格是键,课程名称是值。

import java.util.*;

public class MaxValueInMap {
    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()));
    }
}

保存文件并使用以下命令运行程序:

javac MaxValueInMap.java && java MaxValueInMap

总结

在本实验中,你学习了如何在 Java Map 中查找最大值和最大键。你实现了迭代方法,并使用 Collections 类来查找 Java Map 中的最大值。继续练习以巩固你的 Java 编程技能。

您可能感兴趣的其他 Java 教程