随机生成1-50内,100个数字 统计每个数字的次数 ,并根据出现的次数排序
import java.util.*;
public class NumberTest {
public static void main(String[] args) {
//1-50内,100个数字 统计每个数字的次数 ,并根据value排序
Random random=new Random();
//新建list集合,用来存放随机生成的数字
List<Integer> num=new ArrayList<>();
//将随机生成的数字放到list集合中
for (int i = 0; i < 100; i++) {
int rnum = random.nextInt(51);
num.add(rnum);
}
//打印list集合
System.out.println(num.toString());
//新建map集合,统计每个数字出现的次数
Map<Integer,Integer> map=new TreeMap<>();
//统计每个数组出现的次数
for (int i = 0; i < num.size(); i++) {
int n1 = num.get(i);
if (map.get(n1)==null){
map.put(n1,1);
}else {
int n = map.get(n1);
map.put(n1,n+1);
}
}
//遍历map集合,打印每个数字出现的次数
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
Integer key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+"出现的次数是"+value);
}
//根据map集合中value的值对key进行排序
//这里将map..entrySet()转为list
List<Map.Entry<Integer, Integer>> list=new ArrayList<>(map.entrySet());
//然后通过比较器来实现排序
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
//新建一个list集合,存放排序后的key
List<Integer> asc=new ArrayList<>();
//遍历排序后的list对象,并提取出list集合中每一个map对象的key
for (Map.Entry<Integer, Integer> entry : list) {
asc.add(entry.getKey());
}
//打印排序后key
System.out.println(asc.toString());
}
}