benefit of having a treeset over a manually sorted set

爷,独闯天下 提交于 2019-12-13 01:22:49

问题


In collection we could sort the set or map as per to our requirement. Treeset or TreeMap also provides the sorted collection. Is there any benefit of using treeset when we require sorted collection


回答1:


The posters before be have not mentioned an important criterion: If the elements in your collection change their state often after insertion, i.e. you need to re-sort the same collection several times, maybe a TreeSet or TreeMap are not ideal because elements are only sorted during insertion, never afterwards. I.e. if you change the sorting key of an element in a TreeSet/TreeMap, it will not be re-sorted automatically. You need to remove the element from the collection before updating it and re-add it after updating it, so as to make sure it will be inserted at the right spot. You could use my UpdateableTreeSet to help you keep a TreeSet sorted.

Having said the above, you can conclude that in this case maybe an unsorted collection plus using Collections.sort() on demand might be the easier way to go. Which way is faster overall depends on your situation. I guess that UpdateableTreeSet should pretty much help you keep sorting of an existing collection limited to the places where you really change sorting keys.




回答2:


TreeSet

It is always beneficial to have sorted set when ever it is require.

  • log(n) time cost for the basic operations (add, remove and contains)
  • TreeSet have few handy methods to deal with the ordered set like first(), last(), headSet(), and tailSet() etc
  • The items inside TreeSet are automatically sorted according to their natural ordering if you are not giving your own comparator.

Also please go through the TreeSet documentation. TreeSet




回答3:


The biggest difference is

TreeSet keeps the data sorted all the time and a set which you maintain by manually sorted may not be sorted at all times.

So TreeSet is recommended if you don't want to keep sorting the set all the time.




回答4:


In addition to what others have said, TreeSet has some pretty cool capabilities, like the ability to quickly obtain a sub-set.

Outside of that, it's a question of how often you need things sorted. If you are going to create 100 sets, and only need 1 or 2 of them sorted, then the overhead of sorting during insertion is probably not worth it. But if you are going to sort the set even a single time, tree set will be the way to go.



来源:https://stackoverflow.com/questions/12311969/benefit-of-having-a-treeset-over-a-manually-sorted-set

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!