Java中如何比对数组与优先级HashMap获取最高优先级元素
实现方案
你的场景里优先级规则是HashMap中存储的数值越小,对应水果优先级越高,只需要一次遍历比对就能拿到结果,逻辑非常直接:
- 初始化两个临时变量:一个记录当前遍历到的最高优先级对应的数值,初始值设为
Integer.MAX_VALUE(保证比所有配置的优先级值都大),另一个记录当前找到的最高优先级水果,初始为空字符串即可。 - 遍历水果数组的每一个元素,取出当前水果在优先级Map中对应的优先级数值。
- 比对当前水果的优先级和临时记录的最高优先级:如果当前优先级数值更小,说明这个水果优先级更高,同步更新临时记录的最高优先级数值、最高优先级水果两个变量。
- 整个数组遍历完成后,临时变量里存的水果就是优先级最高的最喜爱水果。
注意:如果水果数组可能存在没有配置优先级的水果,需要在取优先级前加
priorityHash.containsKey(fruit)判断,跳过无配置的项,避免抛出空指针异常。
对应可直接运行的完整代码如下:
import java.util.HashMap; public class FavFruitPicker { public static void main(String[] args) { HashMap<String, Integer> priorityHash = new HashMap<>(); priorityHash.put("Apple",1); priorityHash.put("Orange",2); priorityHash.put("Mango",3); String[] fruits = new String[]{"Mango", "Orange", "Apple"}; String favFruit = ""; int highestPriority = Integer.MAX_VALUE; for (String currentFruit : fruits) { int currentPriority = priorityHash.get(currentFruit); if (currentPriority < highestPriority) { highestPriority = currentPriority; favFruit = currentFruit; } } // 最终favFruit值为Apple,和预期结果一致 System.out.println(favFruit); } }
内容的提问来源于stack exchange,提问作者user3383301
相关产品推荐
相关产品推荐

