nar*_*yan 3 java oop collections
让我们考虑以下示例.
编写具有返回唯一对象集合的公共方法的API.我认为编写该方法的返回类型是很好的,Set以向用户显示项目是唯一的.如果这些项目是唯一的并且是有序的,那么写一个返回类型是一个正确的想法,LinkedHashSet或者它是好的Collection吗?
我知道独特和分类的收藏品.我知道设置公共方法的返回类型类(TreeSet,SortedSet,LinkedHashSet)是个好主意.就oop而言.
您可以返回SortedSet- 这意味着项目已排序,并且是唯一的.
您还可以使用SetUniqueList(来自commons-collection)并返回List(在javadoc中指示元素是唯一的),或者任何set和return Set(并在javadoc中指示ordered属性)
LinkedHashSet 保留插入顺序,但由于您的对象可能正在执行插入操作,因此对客户端没有任何意义.
我建议不要退货LinkedHashSet(除非你有充分的理由)。如果您返回Set,您可以Set根据需要更改实现,HashSet例如TreeSet等
在这种情况下,我认为您的退货建议Set是一个很好的建议,因为它确实表明这些物品是独一无二的。这也表明contains通常会很快(O(1) 或 O(log n))。
另一方面,Collection它非常通用,但它告诉调用者的是,它是一组普通的旧东西,在顺序或唯一性上没有任何特殊限制。指定Set意味着不会对唯一性产生任何混淆,并且您可以在任何Collection可以使用 a 的地方使用它。