ordering collection java core collections treeset

java - collection - Treeset para ordenar elementos en orden descendente



tree set en java (3)

Aquí está la pieza de código que he usado para Java 5.0

TreeSet<Integer> treeSetObj = new TreeSet<Integer>( Collections.reverseOrder() ) ;

Collections.reverseOrder () se utiliza para obtener un comparador para invertir la forma en que se almacenan y se iteran los elementos.

¿Hay una forma más optimizada de hacerlo?


¿Por qué crees que este enfoque no será optimizado? El Comparator orden inverso simplemente va a cambiar el signo de la salida del Comparator real (o la salida de compareTo en los objetos Comparable que se insertan) y, por lo tanto, me imagino que es muy rápido.

Una sugerencia alternativa: en lugar de cambiar el orden en el que almacena los elementos, puede iterar sobre ellos en orden descendente utilizando el método descendingIterator() .


Si está utilizando Java 6, existe un método llamado descendingSet().

descendente

NavigableSet público descendenteSet ()

El conjunto descendente está respaldado por este conjunto, por lo que los cambios al conjunto se reflejan en el conjunto descendente, y viceversa. Si cualquiera de los conjuntos se modifica mientras se está ejecutando una iteración sobre cada conjunto (excepto a través de la propia operación de eliminación del iterador), los resultados de la iteración no están definidos.

The returned set has an ordering equivalent to

Collections.reverseOrder (comparator ()). La expresión s.descendingSet (). DescendingSet () devuelve una vista de s esencialmente equivalente a s.

Specified by: descendingSet in interface NavigableSet<E> Returns: a reverse order view of this set Since: 1.6


TreeSet<Integer> treeSetObj = new TreeSet<Integer>(new Comparator<Integer>() { public int compare(Integer i1,Integer i2) { return i2.compareTo(i1); } });

Hay necesidad de voltear el resultado. Pero supongo que esto es solo una microoptimización ... ¿Realmente necesitas esto?