据我所知,java在进行比较时会抛出一个键,如果一个键没有实现Comparable接口,你将获得Exception in thread "main" java.lang.ClassCastException: maps.TreeMapExample$A cannot be cast to java.lang.Comparable
的异常RuntimeException
。
为什么它没有明确要求 K 在类签名中扩展可比较接口,例如public interface Map<K extends Comparable,V> {
让编译器检查它?
答案 0 :(得分:3)
HashMap不需要键可比较但仍然实现Map接口。只有TreeMap有此要求。
此外,TreeMap也可以与非Comparable键一起使用,provided a comparator at creation time