在集合中,我们可以根据我们的要求对集合或地图进行排序。Treeset 或 TreeMap 也提供排序集合。当我们需要排序集合时,使用树集有什么好处吗
4 回答
我之前的发帖人没有提到一个重要的标准:如果你的集合中的元素在插入后经常改变它们的状态,即你需要对同一个集合重新排序几次,可能 aTreeSet
或TreeMap
不理想,因为元素只在插入期间排序,以后再也不。TreeSet
即,如果您更改/中元素的排序键TreeMap
,它将不会自动重新排序。您需要在更新之前从集合中删除元素,并在更新后重新添加它,以确保将其插入到正确的位置。您可以使用我的UpdateableTreeSet来帮助您保持TreeSet
排序。
如上所述,您可以得出结论,在这种情况下,未排序的集合加上Collections.sort()
按需使用可能是更简单的方法。哪种方式总体上更快取决于您的情况。我想这UpdateableTreeSet
应该可以帮助您将现有集合的排序限制在您真正更改排序键的地方。
树集
在需要时进行排序总是有益的。
- log(n) 基本操作的时间成本(添加、删除和包含)
- TreeSet 有几个方便的方法来处理有序集,如 first()、last()、headSet() 和 tailSet() 等
- 如果您不提供自己的比较器,则 TreeSet 中的项目将根据其自然顺序自动排序。
另请阅读 TreeSet 文档。树集
最大的不同是
TreeSet
始终保持数据排序,并且您通过手动排序维护的集合可能不会始终排序。
TreeSet
如果您不想一直对集合进行排序,建议您这样做。
除了其他人所说的之外,TreeSet 还有一些很酷的功能,比如快速获取子集的能力。
除此之外,这是您需要多久对事物进行分类的问题。如果您要创建 100 个集合,并且只需要对其中的 1 或 2 个进行排序,那么在插入期间排序的开销可能不值得。但是,如果您要对集合进行一次排序,那么树集将是您的选择。