我在牛客网上刷题时遇到了这道题目,因为初学Java不久,对Java的应用还不熟悉,刚开始用C语言做没做出来(我太菜了。。。),接着百度发现竟然可以用HashMap做,仔细一想发现这真是一个好办法(为什么我就想不到!!!),下面是我参考大佬们的代码自己写出来的,附加了个人理解。
import java.util.*;/*** 从键盘输入一个数组* 找出数组中出现次数最多的元素* @author Administrator**/public class max_number_Array{public static void main(String[] args) {Scanner in = new Scanner(System.in);int num = in.nextInt();int[] data = new int[num];for(int i=0; i<num; i++) {data[i] = in.nextInt();}Map<Integer,Integer> numMap = new HashMap<Integer,Integer>();//在Map中存入数组元素;包括某个元素出现的次数for(int i=0; i<num; i++) {if(numMap.containsKey(data[i])) {//如果Map中已经有该元素,则其value值加1int temp = numMap.get(data[i]);numMap.put(data[i],temp+1);}else {//如果Map中没有该元素,则添入该元素(这其实就是初始化)numMap.put(data[i], 1);}}//找出出现次数最多的元素。Collection<Integer> KeyArray = numMap.values();//存储所有元素出现的次数;int maxCount = Collections.max(KeyArray);//找出最大的次数,下一步:元素和次数进行匹配;for(Map.Entry<Integer, Integer> map:numMap.entrySet()) {//通过Entry利用增强for循环遍历上述Map的键值对对象if(maxCount == map.getValue()) {//获取value值一一匹配System.out.print("此数组中出现次数最多的元素是:");System.out.println(map.getKey());//如果匹配成功,输出该value值对应的Key值}}System.out.println("该元素出现的次数是:"+maxCount);}}