我有一個HashMap resultdata像下面獲取所有前N個等級記錄在java中
"zip000", 1234
"zip001", 2345
"zip002", 3456
"zip003", 4567
"zip004", 7890
"zip005", 7890
"zip006", 123
"zip007", 234
"zip010", 7890
"zip011", 678
"zip012", 789
"zip013", 890
,並使用下面的代碼
public static List<String> topNKeys(final HashMap<String, Integer> map, int n) {
PriorityQueue<String> topN = new PriorityQueue<String>(n, new Comparator<String>() {
public int compare(String s1, String s2) {
return Integer.compare(map.get(s1), map.get(s2));
}
});
for(String key:map.keySet()){
if (topN.size() < n)
topN.add(key);
else if (map.get(topN.peek()) < map.get(key)) {
topN.poll();
topN.add(key);
}
}
return (List) Arrays.asList(topN.toArray());
}
上面的代碼顯示我TOPN記錄作爲
假設N = 6
zip001=2345
zip002=3456
zip003=4567
zip005=7890
zip010=7890
zip004=7890
但我需要它t ø給所有頂部6 resultdata根據整數排名,我的意思是像下面
zip013=890
zip000=1234
zip001=2345
zip002=3456
zip003=4567
zip005=7890
zip010=7890
zip004=7890
根據其中7890,4567,3456,2345,1234,890是前5整數的整數。
我怎麼能這樣做?任何形式的幫助和建議表示讚賞。
我不明白。根據Integer Rank **,你的意思是**?這個等級是什麼? –
請記住以前的值。如果'key'等於先前的值,則將'n'增加1。 –
@Nico Van Belle這裏根據Integer排名,我的意思是,具有相同值的Integer將被賦予單個排名 – daisy