随机生成一万个数据得到出现次数最多的十个

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.PriorityQueue;
import java.util.Random;

/**  
* 类说明  :
*  描述:TODO
* @author 郭莹棋
* @date 2018年7月25日
*/

public class Test {
public static void main(String[] args) {
    //随机生成一万个数据放入arr中
    ArrayList arr = new ArrayList(10000);
    Random ra = new Random();
    for(int i = 0;i < 10000;i++) {
        arr.add(ra.nextInt(100));
    }
    System.out.println(arr);
    //改写PriorityQueue的compare接口,key为出现的数,Value为出现该数据的次数
    PriorityQueue> p1 = new PriorityQueue>(10,new Comparator>(){
        public int compare(Map.Entry o1, Map.Entry o2) {
            return o1.getValue() - o2.getValue();
        }
});
    
HashMap map = new HashMap();
Iterator iterator = arr.iterator();

while(iterator.hasNext()) {
    Integer i = iterator.next();
    if(!map.containsKey(i)) {
        map.put(i, 0);
    }
    map.put(i, map.get(i) + 1);
}
Iterator> iterator1 = map.entrySet().iterator();
while(iterator1.hasNext()){
    Entry next = iterator1.next();
    Integer key = next.getKey(); 
    Integer value = next.getValue();
    if(p1.size() < 10) {
        p1.add(next);
    }else {
        if(value < p1.peek().getValue()){
            p1.remove();
            p1.add(next);
        }

    }
}
for(int i =0 ;i < p1.size();){
    System.out.println(p1.remove());
}        
}
}

你可能感兴趣的:(随机生成一万个数据得到出现次数最多的十个)