1. 程式人生 > >java實現列印list中重複次數最多的前n個數據

java實現列印list中重複次數最多的前n個數據

如:list中有1,3,4,5,1,7,5,3,4,2,1,5,1……
當輸入輸入引數n為1時,列印1;當輸入引數n為2時,列印1,5

public void printTopN(List<Integer> numbers,int n){
    //先統計各個資料出現的次數
    Map<Integer,Integer>  countMap = new HashMap<Integer,Integer>();
    for(int i = 0;i < numbers.size();i++){
        int num = numbers.get
(i); if(countMap.constainsKey(num)){ countMap.put(num,countMap.get(num) + 1); }else{ countMap.put(num,1); } } //將統計出來的map進行處理 Map<Integer,List<Integer>> resultMap = new HashMap<Integer,List<Integer>>(); List<Integer> tempList = new
ArrayList<Integer>(); //用於記錄出現次數 for(Entry entry: countMap.setEntry()){ int key = entry.getKey(); int value = entry.getValue(); if(resultMap.constainsKey(value){ List list = (List)resultMap.get(value); list.add(key); }else{ List<Ineteger> list = new
ArrayList<Integer>(); list.add(key); resultMap.put(value,list); tempList.add(value); } } //對出現次數進行排序 ArrayList.sort(tempList); //輸出結果(可能會輸出多於n個),如果要只輸出n個的話,使用下邊方法 int p = 0; //記錄列印次數 for(int i = tempList.size()-1; i >= 0 && p < n; i--) { List list = resultMap.get(templist.get(i)); for(int j = 0; j < list.size(); j++) { System.out.print(list.get(j) + ","); p++; } } //只輸出n個 for(int i = tempList.size()-1; i >= 0; i--) { List list = resultMap.get(templist.get(i)); for(int j = 0; j < list.size() && p < n; j++) { System.out.print(list.get(j) + ","); p++; } } }