首先对这个问题进行分析,题目说的是在范围为1-1000中随机生成10000和数据,找出每个数据出现的次数,也就是一个数对应它出现的次数,所以我们自然就会想到key-value这种存储数据的方式,所以我们就可以使用集合中map接口的实现类进行解决该问题。
随机生成10000个数
Random random = new Random();
//生成随机数
for (int i = 0; i < 10000; i++) {
//注意编码实现是的数据范围1-1001因为传入的数据进行了减一操作
integers.add(random.nextInt(1001));
}
加入数据到map集合中
while(true){
if (j>=integers.size()){
break;//没有数据就跳出循环
}else{
if (map.containsKey(integers.get(j))){//判断map集合中是否当前的key
map.put(integers.get(j),map.get(integers.get(j))+1);//让数据出现的次数+1
}else {
map.put(integers.get(j),1);//数据第一次出现
}
}
j++;
}
完整代码
public static void main(String[] args) {
List<Integer> integers= new ArrayList<>(50);
Map<Integer,Integer> map=new HashMap<>();
Map<Integer,Integer> map1 = new HashMap<>();
Random random = new Random();
//生成随机数
for (int i = 0; i < 50; i++) {
integers.add(random.nextInt(10));
}
int j = 0;//记录integers集合元素的下标
while(true){
if (j>=integers.size()){
break;//没有数据就跳出循环
}else{
if (map.containsKey(integers.get(j))){//判断map集合中是否当前的key
map.put(integers.get(j),map.get(integers.get(j))+1);//让数据出现的次数+1
}else {
map.put(integers.get(j),1);//数据第一次出现
}
}
j++;
}
Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<Integer, Integer> entry = iterator.next();
System.out.println("数据元素:"+ entry.getKey()+" 出现次数:"+entry.getValue());
}
}