Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida além do exercício

Caros colegas, por que quando chamo o método fora de um for ou fora de um sysout ele não mantém na ordem decrescente e sim na ordem em que foram armazenados?

Por exemplo:

import java.util.TreeSet;

public class TestaOrdemDecrescente {

    /**
     * @param args
     */
    public static void main(String[] args) {

        TreeSet<Integer> listas = new TreeSet<>();

        for(int i = 0; i < 1000; i++){
            listas.add(i+1);
        }

        listas.descendingSet();

        for(Integer lista : listas){
            System.out.println(lista);
        }

    }

}

A saída fica na ordem que foram armazenados: 1 2 3 4 5...

2 respostas
solução!

Fala Diego, tudo bem ?

Isso acontece porque o método descendingSet() do TreeSet não altera o conjunto. Este método na verdade gera, a partir do TreeSet original (mantem ordem se inserção), um outro conjunto. Este conjunto resultante sim, já contém seus valores seguindo ordenação descendente.

Exemplo:

Set<Integer> descendingSet = listas.descendingSet();

for(Integer element : descendingSet){
    System.out.println(element);
}

Já resolve o caso.

Mais detalhes sobre o método aqui -> https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#descendingSet

Abraço!

Valeu Rafael. Agora entendi!