我試圖用Comparator
應該能夠訪問上述TreeMap
實例化一個TreeMap
一個比較,即一個它將使用對(我猜「將」必須precisly是問題......):實例化一個TreeMap使用它應該能夠訪問表示TreeMap的
final Map<String, Integer> map = new TreeMap<String, Integer>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Integer i = map.get(o1);
// Error: "the local variable map may not have been initialized"
return ...;
}
});
我可以明白爲什麼這個錯誤發生時,實例化Comparator<String>
時,因爲在map
變量尚未初始化,但有沒有解決方法?
一種解決方案已經在the TreeMap
implementation一個setComparator
方法,但其comparator
領域已經聲明爲final:
final Map<String, Integer> map = new TreeMap<String, Integer>();
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Integer i = map.get(o1);
return ...;
}
};
// map.setComparator(comparator);
您是否嘗試對值進行排序? – assylias 2013-04-04 09:32:22
根據我的理解,比較器應該只使用在比較方法中作爲參數提供的值。如果您使用其他值,您最終會將其綁定到外部值的狀態,然後比較器將不一致。這也解釋了爲什麼比較是最終的。如果你想要2個不同的比較器,你最好創建2個樹形圖實例。 – prashant 2013-04-04 09:35:41
'Map'是不可能的? –
2013-04-04 09:41:05