Java 对于强制执行类似类型的集合,相对于编译时检查,抛出运行时异常有什么好处?
当实现我自己的数据结构时,需要一个可比较的类型,我总是这样做:Java 对于强制执行类似类型的集合,相对于编译时检查,抛出运行时异常有什么好处?,java,data-structures,comparable,Java,Data Structures,Comparable,当实现我自己的数据结构时,需要一个可比较的类型,我总是这样做: 公共类可比集合{…} 这显然会在编译时强制执行可比较的约束。但在过去的几年里,我一直是一名学生,但不知何故,我忽略了一个事实,即强制执行类似类型的集合的Java实现不是在编译时执行的,而是在运行时执行的,在添加元素时可能抛出一个ClassCastException;e、 g: 公共类树集扩展了抽象集 实现NavigableSet。。。{…} TreeSet由NavigableMap支持,如果它是Comparator为null,则会尝
公共类可比集合{…}
这显然会在编译时强制执行可比较的约束。但在过去的几年里,我一直是一名学生,但不知何故,我忽略了一个事实,即强制执行类似类型的集合的Java实现不是在编译时执行的,而是在运行时执行的,在添加元素时可能抛出一个ClassCastException
;e、 g:
公共类树集扩展了抽象集
实现NavigableSet。。。{…}
TreeSet
由NavigableMap
支持,如果它是Comparator
为null
,则会尝试按如下方式转换键:
Comparable这样做的好处是,您可以将TreeSet与未实现Comparable
但可以提供比较器的对象一起使用
有关Comparator与Comparator之间的差异的更多信息,请参阅:您无法始终控制在编译时将哪些对象插入到集合中。允许集合的动态定义更加灵活。另请参见。TreeSet
中的元素不需要具有可比性,您可以明确地给出一个比较器。@Tunaki,令人惊讶的是,当您从自己的头脑中摆脱出来时,某些东西会变得更有意义。这太有道理了。现在有一个无聊的时刻。请进一步解释一下,好吗?真的。仅仅因为一个类没有实现可比性
,并不意味着它不需要或不可比性。