程序:随机产生50个红(red)、绿(green)、蓝(blu)色块,统计其个数,并按个数多少,从大到小排序。
String[] color={"red","green","blue"};
List<String> lst = new ArrayList<>();
for (int i = 0; i < 50; i++) {
lst.add(color[(int)(Math.random()*3)]);
}
HashMap<String,Integer> hm=new HashMap<>();
for (String str : lst) {
hm.put(str,hm.getOrDefault(str,0)+1);
}
ArrayList<Map.Entry<String, Integer>> etys = new ArrayList<>(hm.entrySet());
etys.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue()-o1.getValue();
}
});
for (Map.Entry<String, Integer> ety : etys) {
System.out.println(ety.getkey());
System.out.println(ety.getvalue());
}
注意手法。