所以我必须在我的代码中使用 TreeSet
。
作为 TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable
和 interface NavigableSet<E> extends SortedSet<E> which extends Set<E>
我可以使用这三个声明中的任何一个:
NavigableSet<String> myTreeSet= new TreeSet<>();
SortedSet<String> myTreeSet= new TreeSet<>();
Set<String> myTreeSet= new TreeSet<>();
我知道我将只能访问我在声明中使用的接口(interface)公开的那些方法。是否还有其他原因需要考虑为
TreeSet
选择特定声明? 最佳答案
正如您所说,它基本上是您允许他人(或您自己)使用的内容。您喜欢与 TreeSet 一起使用的其他方法可能取决于实际声明。所以可能有一个方法需要 SortedSet,但是当你将 TreeSet 定义为 Set 时,它将无法继续
关于java - TreeSet 的这些声明之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33648266/