随机生成100个30-40的随机数,然后统计每个数字的个数。
public static void main(String[] args) {
ArrayList list = new ArrayList();
Random re = new Random();
HashMap<Integer,Integer> hm = new HashMap();
for (int i = 0; i < 100; i++) {
int num = re.nextInt(11)+30;
list.add(num);
if (hm.containsKey(num)){
hm.put(num,hm.get(num)+1);
}else {
hm.put(num,1);
}
}
System.out.println("随机的数字为:\n"+list);
hm.forEach((key,value)-> System.out.println(key+" :"+value+" 个"));
}
很简单啊,弄一个长度为11的数组,全部初始化为0,然后a[rand.nextInt(11)]++,循环100次
public static void main(String[] args) {
// 随机生成100个30-40的随机数,然后统计每个数字的个数
Map<Integer,Integer> map = new HashMap<>(10);
for (int i = 0,index = 100;i < index;i++) {
int v = (int) (30 + Math.random() * 10);
switch (v) {
case 30:
map.put(30,map.get(30) == null ? 0 : map.get(30) + 1);
break;
case 31:
map.put(31,map.get(31) == null ? 0 : map.get(31) + 1);
break;
case 32:
map.put(32,map.get(32) == null ? 0 : map.get(32) + 1);
break;
case 33:
map.put(33,map.get(33) == null ? 0 : map.get(33) + 1);
break;
case 34:
map.put(34,map.get(34) == null ? 0 : map.get(34) + 1);
break;
case 35:
map.put(35,map.get(35) == null ? 0 : map.get(35) + 1);
break;
case 36:
map.put(36,map.get(36) == null ? 0 : map.get(36) + 1);
break;
case 37:
map.put(37,map.get(37) == null ? 0 : map.get(37) + 1);
break;
case 38:
map.put(38,map.get(38) == null ? 0 : map.get(38) + 1);
break;
case 39:
map.put(39,map.get(39) == null ? 0 : map.get(39) + 1);
break;
case 40:
map.put(40,map.get(40) == null ? 0 : map.get(40) + 1);
break;
default:
}
}
System.out.println(map);
结果
{32=5, 33=8, 34=7, 35=7, 36=7, 37=11, 38=11, 39=16, 30=9, 31=9}
ThreadLocalRandom.current().ints(30, 40).limit(100).boxed().collect(Collectors.groupingBy(Integer::new, Collectors.counting()));
Map<Integer, Long> map = new Random().ints(30, 40).limit(100).boxed()
.collect(Collectors.groupingBy(v -> v, Collectors.counting()));
System.out.println(map);