我正在尝试实例化一个TreeMap
using a Comparator
,它应该能够访问 said TreeMap
,即它将用于的那个(我猜“ will ”肯定是问题所在......):
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
变量尚未初始化,但是有任何解决方法吗?
解决方案本来是 implementation 中的方法,setComparator
但它的字段已被声明为 final:TreeMap
comparator
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);