我正在寻找一种方法来确定一个Collection(或者甚至是任何Iterable)是否可以保证按类合同订购。
我已经知道番石榴方法:Ordering.natural().isOrdered(myCollection)
但是这种方法与我的需求无关,因为它检查集合中的值是否有序。这不是我需要确定的,我想要的是isSorted
方法,其行为如下:
isSorted(new HashSet()) -> false
isSorted(new ArrayList()) -> true
等...
我所看到的通常是通过检查集合的类,并将其与集合的某种类型的参考表进行比较来实现,这些集合表明它们是有序的,并且只对这些集合返回true。
你知道某些图书馆中是否存在这样的东西吗?
答案 0 :(得分:0)
您可以执行以下操作来确定是否定义了一个集合进行排序。
collection instanceof SortedSet
答案 1 :(得分:0)
有序集合有三个接口:List,SortedSet和SortedMap。您可以检查您的班级是否正在实施其中一个。
答案 2 :(得分:0)
不,这在任何库中都不存在,并且有充分的理由。
该库必须知道所有飞行的集合类型。如果你正在使用Apache Commons Collections,它必须知道所有这些。如果您正在使用番石榴,它必须了解所有这些。如果有人出现并引入了新的集合类型,您现在将拒绝该类型,即使它已被订购。
在库中提供该方法没有意义,该库无法知道您可能拥有的其他库以及其他任何类型的集合类型。
在最终的应用程序中,使用您已经描述过的启发式技术来实现它可能是有意义的。
如果我们知道您实际尝试使用此方法做什么,可能会有所帮助。