Ordenação de Objetos em Conjuntos

Quem puder me ajudar por favor.

Criei um conjunto (set) de objetos de uma certa classe. Essa classe tem strings, e um double.
Preciso imprimir esse conjunto de varias formas, isto é, por ordem de cada tipo de string existente e por ordem do valor do double.
Como faço isso?

“Ordenar um conjunto por cada atributo de objeto contido nele?”

Eu posso utilizar qualquer implementação da Collection (List, Set)
Ficaria mais adequado por qual? Eu que preferi conjunto porque não aceita repetição. Em list eu teria que “preparar” o codigo um poquinho mais para não ocorrer duplicação.

No seu caso, use um ArrayList mesmo, e use Collections.sort.

Para cada tipo de ordenação, use um Comparator novo.

Alternativamente, você pode ter diferentes TreeSets, cada qual com seu Comparator específico para uma determinada ordenação.

Esse é exatamente meu problema.

Como defino um Comparator para cada tipo de String e um para um tipo double?

Set´s não são ordenados.

Para o seu caso eu usaria List.

[code]import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
*

  • @author moacir
    */
    public class Main{

    static class Ordena implements Comparator{
    /* utilizado por Comparator*/
    public int compare(SeusDados o1, SeusDados o2) {
    return o1.suaString.compareTo(o2.suaString);
    }
    }
    static class SeusDados implements Comparable{

     String suaString;
     Double seuDouble;
    
     public SeusDados(String s, Double d){
         suaString = s;
         seuDouble = d;
     }
    
     public Double getDouble(){return seuDouble;}
     public String getString(){return suaString;}
    
     public int compareTo(SeusDados o1) {
         return seuDouble.compareTo(o1.seuDouble);
     }
     public int hashCode(){
         return suaString.length();
     }
    
     public boolean equals(Object o){
         if((o instanceof SeusDados) &
                 (((SeusDados)o).suaString == this.suaString))
             return true;
         else return false;
     }
    
     public String toString(){return suaString + " " + seuDouble + "\n";}
    

    }

    public static void main(String[] args) {
    SeusDados sd;
    List lista = new ArrayList();
    for(int i = 0; i < 10; i++){
    sd = new SeusDados("nome " + i, new Double(i * Math.random()));
    lista.add(sd);
    }

     /*Ordena por Double.*/
     Collections.sort(lista);
     System.out.println("Ordenada por Double: " + lista);
    
     
     /*Ordena por String.*/
     Ordena ordena = new Ordena();
     Collections.sort(lista, ordena);
     System.out.println("Ordena por String: " + lista);
    

    }
    }[/code]

Valeu mesmo.
Pensei também em criar uma classe separada para tal fim, mas isso eu não posso fazer. Eu teria que fazer então tres classes. Uma para cada string.
E eu não posso usar mais do que a classe do exercicio.

Valeu o esforço.

Farei assim e pronto.

Cansei de tentar de n formas.

Agradeço Imensamente você, moacirjava.