这是Java TreeMap实现的标题(1.8_071):
public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, java.io.Serializable
为什么没有限制,像这样:
public class TreeMap<K extends Comparable<?>,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, java.io.Serializable
答案 0 :(得分:8)
因为,正如文档所说,您可以使用不是Comparable的密钥并提供Comparator对象:
TreeMap(Comparator<? super K> comparator)
Constructs a new, empty tree map, ordered according to the given comparator.
(https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html)
答案 1 :(得分:1)
TreeMap根据文档的自然排序顺序进行排序,即它使用在键上定义的compareTo方法。如果没有找到compareTo,我猜它不会打扰排序,除非你在构造TreeMap时提供比较器类。
这样做的好处是您在构建TreeMap时不必提供自定义比较器。 TreeMap根据关键对象的compareTo方法自动排序。