为什么java允许TreeMap键和TreeSet值不可比?

the*_*aba 1 java treemap treeset

这是java TreeMap实现的标题(1.8_071):

public class TreeMap<K,V>
    extends AbstractMap<K,V>
    implements NavigableMap<K,V>, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)

为什么没有限制,像这样:

 public class TreeMap<K extends Comparable<?>,V>
        extends AbstractMap<K,V>
        implements NavigableMap<K,V>, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)

JP *_*mau 8

因为,正如文档所说,您可以使用不是Comparable的密钥并提供Comparator对象:

TreeMap(Comparator<? super K> comparator)
Constructs a new, empty tree map, ordered according to the given comparator.
Run Code Online (Sandbox Code Playgroud)

(https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html)