获取数组中重复最多的元素
-
记录每个元素出现的个数
-
找出出现最多的元素出现的次数
-
筛选出次数和最多次数相等的所有元素,特别注意:网络上很多算法都只能找一个最多的元素
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class chongfuMax { /*获取数组中重复最多的元素*/ public static void main(String[] args) { int a[]={5,5,8,5,3,7,7,3,2,1,7}; /*记录每个元素出现的个数*/ Map<Integer,Integer> m= new HashMap<Integer,Integer>(); for (int i = 0; i < a.length; i++) { if (m.containsKey(a[i])) { m.put(a[i],m.get(a[i])+1); }else{ m.put(a[i],1); } } /*找出出现最多的元素的次数*/ int most=0; Iterator iter=m.entrySet().iterator(); while (iter.hasNext()){ Map.Entry entry=(Map.Entry)iter.next(); int key=(Integer)entry.getKey(); int val=(Integer)entry.getValue(); System.out.println("键"+key+"值"+val); if(val>most){ most=val; } } /*筛选出次数和最多次数相等的所有元素*/ Set<Map.Entry<Integer,Integer>> entrySet =m.entrySet(); for (Map.Entry<Integer,Integer> en : entrySet) { int num=en.getValue(); if (num == most) { System.out.println(en.getKey()); } } } } 结果为 键1值1 键2值1 键3值2 键5值3 键7值3 键8值1 5 7