TreeSet invertir su orden natural

Iniciado por mgc, 15 Abril 2014, 19:53 PM

0 Miembros y 1 Visitante están viendo este tema.

mgc

Buenas,

Tengo la siguiente duda, yo tengo una colección TreeSet y quería que me mostrase los elementos en el orden inverso de los que lo ordena.

El profesor me ha comentado que podría utilizar la interfaz comparator, creando una clase para comparar los elementos. El problema es que el método para comparar es para listas, por lo tanto no me vale.

Yo he elegido TreeSet porque un requisito del enunciado del problema, dice que los elementos no pueden estar duplicados.

En resumen es que no sé cómo hacerlo de ninguna de las maneras, a ver si alguien me puede ayudar. :huh:

Gracias de antemano y saludos.

1mpuls0

#1
Intenta con los métodos

Código (java) [Seleccionar]
descendingSet()
En este caso tendrás que crear una TreeSet auxiliar además de la clase Iterator.

Código (java) [Seleccionar]
descendingIterator()
En este caso solo tendrás que hacer uso de la clase Iterator

Edito.

Si entendí bien debe ser algo así.

Código (java) [Seleccionar]

import java.util.Iterator;
import java.util.TreeSet;

/**
*
* @author 1mpuls0
*/
public class TreeSetReverseDemo {
   public static void main(String[] args) {
    TreeSet <String>treeadd = new TreeSet<String>();
    TreeSet <String>treereverse = new TreeSet<String>();

    treeadd.add("1mpuls0");
    treeadd.add("S");
    treeadd.add("F");
    treeadd.add("01");

    treereverse=(TreeSet)treeadd.descendingSet();
   
    Iterator iterator;
    iterator = treereverse.iterator();
   
    System.out.println("Tree set: ");    
    while (iterator.hasNext()){
       System.out.println(iterator.next() + " ");
    }
  }    
}
abc

mgc

Parece casualidad, acabo de poner la duda y consigo hacerlo....

Muchas gracias por tu respuesta, dejo aquí mi solución por si a alguien le pudiese servir. 

método para comparar números

public int compare(String o1, String o2) {
         long p1=Long.parseLong(o1);
         long p2=Long.parseLong(o2);
        if (p1<p2) return 1;
        else if(p1>p2) return -1;
        else return 0;
       
     }


En el momento de crear el TreeSet paso el comparador por parámetro de la siguiente manera:

numeros=new TreeSet<String>(new ComparadorNumeros());