Foro de elhacker.net

Programación => Java => Mensaje iniciado por: mgc en 15 Abril 2014, 19:53 pm



Título: TreeSet invertir su orden natural
Publicado por: mgc en 15 Abril 2014, 19:53 pm
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.


Título: Re: TreeSet invertir su orden natural
Publicado por: 1mpuls0 en 15 Abril 2014, 20:06 pm
Intenta con los métodos

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

Código
  1. descendingIterator()
En este caso solo tendrás que hacer uso de la clase Iterator

Edito.

Si entendí bien debe ser algo así.

Código
  1. import java.util.Iterator;
  2. import java.util.TreeSet;
  3.  
  4. /**
  5.  *
  6.  * @author 1mpuls0
  7.  */
  8. public class TreeSetReverseDemo {
  9.    public static void main(String[] args) {
  10.     TreeSet <String>treeadd = new TreeSet<String>();
  11.     TreeSet <String>treereverse = new TreeSet<String>();
  12.  
  13.     treeadd.add("1mpuls0");
  14.     treeadd.add("S");
  15.     treeadd.add("F");
  16.     treeadd.add("01");
  17.  
  18.     treereverse=(TreeSet)treeadd.descendingSet();
  19.  
  20.     Iterator iterator;
  21.     iterator = treereverse.iterator();
  22.  
  23.     System.out.println("Tree set: ");    
  24.     while (iterator.hasNext()){
  25.        System.out.println(iterator.next() + " ");
  26.     }
  27.   }    
  28. }
  29.  


Título: Re: TreeSet invertir su orden natural
Publicado por: mgc en 15 Abril 2014, 20:20 pm
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

Código:
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:

Código:
numeros=new TreeSet<String>(new ComparadorNumeros());