我想通過執行這個循環來獲得映像樹的頂部10個元素:TreeMap的<整數,整數>刪除不工作
TreeMap<Integer, Integer> sortedMap = sortMap(m);
String outString = "";
int count = 10;
while (count > 0) {
count--;
Integer k = sortedMap.firstKey();
outString += String.valueOf(k);
sortedMap.remove(k);
if (count != 0) {
outString += ",";
}
}
System.out.println("outVal is " + outVal);
這將打印outVal is 11377,11377,11377,11377,11377,11377,11377,11377,11377,11377
Integer
實現Comparable
,那麼,爲什麼不remove
在工作嗎?
UPDATE這是我的sortMap
實現:
public static TreeMap<Integer, Integer> sortMap(HashMap<Integer, Integer> map) {
ValueComparator bvc = new ValueComparator(map);
TreeMap<Integer,Integer> sorted_map = new TreeMap<Integer,Integer>(bvc);
sorted_map.putAll(map);
return sorted_map;
}
class ValueComparator implements Comparator<Integer> {
java.util.Map<Integer, Integer> base;
public ValueComparator(java.util.Map<Integer, Integer> base) {
this.base = base;
}
// Note: this comparator imposes orderings that are inconsistent with equals.
public int compare(Integer a, Integer b) {
if (base.get(a) >= base.get(b)) {
return -1;
} else {
return 1;
} // returning 0 would merge keys
}
}
UPDATE這是有幫助的:Java Map sort by value。
你能證明你的'sortMap'方法?我認爲問題在這裏,而不是你提供的代碼片段。 –
'outVal'未在此代碼段中定義。你是不是指'outString'? – dimoniy
我糾正了dimoniy提到的錯誤,輸出在我身邊是正確的。 –