List with Comparable Vs TreeSet

collections, comparable, java, listiterator

Solution

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);
}

Problem

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.

Original source