java - 使用 HashMap 的数字的最大频率。替代方法

标签 java hashmap

 public static int maxFrequencyNumber(int[] arr){

        HashMap<Integer,Integer> m = new HashMap<>();


     for(int i=0;i<arr.length;i++){
        if(m.containsKey(arr[i]))
            m.put(arr[i],m.get(arr[i])+1);
         else
             m.put(arr[i],1);

     }
       ArrayList<Integer> p = new ArrayList<>();

     Set<Integer> s = m.keySet();   
        for(Integer i:s)
           p.add(m.get(i));

           Collections.sort(p);


         for(Integer i:s){
             if(m.get(i)==p.get(p.size()-1))
                 return i;


         }
        return 0;

    }

给你一个整数数组,其中包含随机顺序的数字。编写一个程序来查找并返回给定输入中出现次数最多的数字。

如果两个或多个元素竞争最大频率,则返回数组中最先出现的元素。

我得到了正确的输出,除了数组中的所有元素具有相同频率的一种情况。出了什么问题?

最佳答案

您的问题是 HashMap 不记录其条目的插入顺序。因此,当频率存在“平局”时,您的代码可以返回任何一个相应的键。

如果您在代码中将 HashMap 更改为 LinkedHashMap,则可以保证条目将按照最初插入的顺序进行迭代。这将解决您的问题。

关于java - 使用 HashMap 的数字的最大频率。替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61179949/

相关文章:

java - 查找使用通配符属性注册的 OSGI 服务

java - Spring MVC - HTTP 状态 404

java - 从 arraylist 和 hashmap 中删除重复项

java - 使用 Google App Engine Java 提供动态图像

java - 如何使用 java-selenium 中的 cucumber bdd 框架处理 Bootstrap 下拉列表

java - @Test(expected = Exception.class) 对我不起作用,我错过了什么?

java - (Java) 使用 HashMap 从两个文件中读取子字符串和数据

Java Map<> 可以使用内在类型吗?

java - 如何创建 get() 调用返回可选包装值的自定义映射?

java - HashMap 不同步那么并发修改异常的原因