Option 1: Make a list which implements Comparable and sort it using collections.sort(List l) every time you add a value. Option 2: Make a TreeSet (which keeps itself sorted all the time).
Which one will be faster? I am asking this because List gives me the option of ListIterator which I need in my case, since it lets me add an element while iterating.
The most important differences:
Criterion | List with Collections.sort | TreeSet
----------------+----------------------------+---------
cost of adding | O(n log n) | O(log n)
equal sort keys | permitted | eliminated as duplicates
iteration | bidirectional, can insert | unidirectional, can not insert
To insert an element when iterating without getting a ConcurrentModificationException
, you can do:
for (E e : new ArrayList<E>(collection)) {
// some other code
collection.add(anotherE);
}