Map转换为List并重写Compare方法实现随机数指定特征排序
Posted 之墨_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map转换为List并重写Compare方法实现随机数指定特征排序相关的知识,希望对你有一定的参考价值。
定义Map与随机数
int[] arrInt = new int[1000];
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
Random r = new Random();
将随机数存入Map中
for(int i=0;i<1000;i++)
{
arrInt[i] = r.nextInt(100)+1;
if(map.containsKey(arrInt[i]))
{
map.put(arrInt[i], map.get(arrInt[i])+1);
}
else
{
map.put(arrInt[i], 1);
}
}
将
map
的键作为随机数,若数组arrInt[]
中包含该键key,则对应map
元素的值value+1
若不存在,则设置值为1
Map转换为List
List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>(map.entrySet());
将list
中的元素设置为Entry<Integer, Integer>>
类型的,并从map
中取值赋值
重写Compare方法
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
return o2.getValue().compareTo(o1.getValue());
若
O2
的值大于O1
的值,则O2
排序在前,即降序排列
遍历生成的list输出其中的元素
for (Entry<Integer, Integer> entry : list)
{
System.out.println(entry.getKey()+" 出现了 "+entry.getValue()+"次");
}
完整代码
public class num {
public static void main(String[] args) {
int[] arrInt = new int[1000];
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
Random r = new Random();
for(int i=0;i<1000;i++)
{
arrInt[i] = r.nextInt(100)+1;
if(map.containsKey(arrInt[i]))
{
map.put(arrInt[i], map.get(arrInt[i])+1);
}
else
{
map.put(arrInt[i], 1);
}
}
List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
for (Entry<Integer, Integer> entry : list)
{
System.out.println(entry.getKey()+" 出现了 "+entry.getValue()+"次");
}
}
以上是关于Map转换为List并重写Compare方法实现随机数指定特征排序的主要内容,如果未能解决你的问题,请参考以下文章
List排序Collections.sort 重写compare