El verdadero poder y la ventaja de TreeSet se encuentra en la interfaz que se da cuenta - NavigableSet
Por qué es tan potente y en este caso?
interfaz navegable Conjunto añadir, por ejemplo, estos 3 métodos bonito:
headSet(E toElement, boolean inclusive)
tailSet(E fromElement, boolean inclusive)
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
Estos métodos permiten organizar algoritmo de búsqueda efectiva (muy rápido).
Ejemplo: tenemos que encontrar todos los nombres que empiezan por Milla y terminar con Wladimir:
TreeSet<String> authors = new TreeSet<String>();
authors.add("Andreas Gryphius");
authors.add("Fjodor Michailowitsch Dostojewski");
authors.add("Alexander Puschkin");
authors.add("Ruslana Lyzhichko");
authors.add("Wladimir Klitschko");
authors.add("Andrij Schewtschenko");
authors.add("Wayne Gretzky");
authors.add("Johann Jakob Christoffel");
authors.add("Milla Jovovich");
authors.add("Taras Schewtschenko");
System.out.println(authors.subSet("Milla", "Wladimir"));
de salida:
[Milla Jovovich, Ruslana Lyzhichko, Taras Schewtschenko, Wayne Gretzky]
TreeSet no va más de todos los elementos, se encuentra primer y último elemenets y devuelve una nueva colección con todos los elementos del rango.
No quiero comenzar una respuesta adicional porque ya se han dado algunas, pero quiero agregar un hecho más: ha hablado de agregar/eliminar datos. ¿Qué hay de la actualización? Tenga en cuenta que TreeSet nunca actualizará su orden de clasificación si cambia los objetos del elemento con respecto a su "clave de clasificación". Si quieres hacer eso, utiliza mi clase [UpdateableTreeSet] (http://stackoverflow.com/a/11169301/1082681) o algo similar. Puede ser un factor decisivo si tiene objetos con estado cambiante. – kriegaex