200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 利用HashMap找出数组中出现次数最多的元素及其次数

利用HashMap找出数组中出现次数最多的元素及其次数

时间:2019-02-06 01:15:45

相关推荐

利用HashMap找出数组中出现次数最多的元素及其次数

我在牛客网上刷题时遇到了这道题目,因为初学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);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。