问题描述:
一个int类型的数组,元素的值在0-10000范围内,统计重复出现最多的数字及出现的次数
思路:利用map集合,key存数,value存这个数出现的次数
代码展示:
package com.august.test;
import java.util.*;
/**
* 一个int类型的数组,元素的值在0-10000范围内,统计重复出现最多的数字及出现的次数
*/
public abstract class Collection {
public static void main(String[] args) {
int[] a=new int[]{1,1,3,324,1,1,4,77,42,34};
Map<Integer,Integer> map=new HashMap<>();//key放数组中的数,value放这个数出现的次数
for (Integer i : a) {
Integer num=map.get(i);//出现的次数
if (num==null){ //没出现
map.put(i,1);//放进去
}else {
num++; //出现过 num++
map.put(i,num);//再放进去
}
}
int max=-1;//用来接收出现的次数
int y=0;//全局变量 用来接收出现最多的那个数
Set<Integer> set=map.keySet();//得到所有的键的集合,也就是拿到这些数
for (Integer s : set) {
if (map.get(s)>max) {//返回指定键的值 就相当于返回value
max=map.get(s);
y=s;
}
}
System.out.println(y+"出现了"+max+"次");
}
}