为什么treeMap.entrySet()和treeMap.keySet()方法不返回SortedSet?我可能会说这是一个错误.根据API,Set被定义为没有特定的排序.但是,TreeMap返回的集合确实有特定的顺序.
我扩展了TreeMap,覆盖了"put()",并做了类似的事情:
public class MyMap<K, Integer> extends TreeMap<K, Integer> {
@Override
public Integer put(K key, Integer value) throws ClassCastException, NullPointerException {
java.lang.Integer newValue = java.lang.Integer.valueOf(123);
super.put(key, newValue); // <--- error message here
return newValue;
}
}
Run Code Online (Sandbox Code Playgroud)
错误消息:
没有找到适合put的方法(K,java.lang.Integer)... java.lang.Integer无法转换为Integer.
我知道它与泛型有关.改变被覆盖的"put()"中的"值"似乎是一件合理的事情,但我无法弄清楚这一点.
我为TreeSet编写了一个自定义Comparator.为了调试,我决定硬连线"compare()"以始终返回0.令我惊讶的是,一个项目被输入到Set中.
那为什么会这样?我正在尽力理解"set.add()"和"compare()"之间的关系.