1

在集合中,我们可以根据我们的要求对集合或地图进行排序。Treeset 或 TreeMap 也提供排序集合。当我们需要排序集合时,使用树集有什么好处吗

4

4 回答 4

3

我之前的发帖人没有提到一个重要的标准:如果你的集合中的元素在插入经常改变它们的状态,即你需要对同一个集合重新排序几次,可能 aTreeSetTreeMap不理想,因为元素只在插入期间排序,以后再也不。TreeSet即,如果您更改/中元素的排序键TreeMap,它将不会自动重新排序。您需要在更新之前从集合中删除元素,并在更新后重新添加它,以确保将其插入到正确的位置。您可以使用我的UpdateableTreeSet来帮助您保持TreeSet排序。

如上所述,您可以得出结论,在这种情况下,未排序的集合加上Collections.sort()按需使用可能是更简单的方法。哪种方式总体上更快取决于您的情况。我想这UpdateableTreeSet应该可以帮助您将现有集合的排序限制在您真正更改排序键的地方。

于 2012-09-08T10:25:36.870 回答
2

树集

在需要时进行排序总是有益的。

  • log(n) 基本操作的时间成本(添加、删除和包含)
  • TreeSet 有几个方便的方法来处理有序集,如 first()、last()、headSet() 和 tailSet() 等
  • 如果您不提供自己的比较器,则 TreeSet 中的项目将根据其自然顺序自动排序。

另请阅读 TreeSet 文档。树集

于 2012-09-07T06:48:54.537 回答
0

最大的不同是

TreeSet始终保持数据排序,并且您通过手动排序维护的集合可能不会始终排序。

TreeSet如果您不想一直对集合进行排序,建议您这样做。

于 2012-09-07T05:02:01.143 回答
0

除了其他人所说的之外,TreeSet 还有一些很酷的功能,比如快速获取子集的能力。

除此之外,这是您需要多久对事物进行分类的问题。如果您要创建 100 个集合,并且只需要对其中的 1 或 2 个进行排序,那么在插入期间排序的开销可能不值得。但是,如果您要对集合进行一次排序,那么树集将是您的选择。

于 2012-09-07T05:08:44.823 回答