1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como Inverter todos os elementos(1 a 1000) de uma lista, utilizando apenas um TreeSet?

Pessoal estou estudando a apostila FJ-11 da Caelum e cheguei em um desafio que me pede para resolver a seguinte questão:

Gere todos os números entre 1 e 1000 e ordene em ordem decrescente utilizando um TreeSet.

Aqui está o código que eu fiz:

package Desafio;

import java.util.Set;
import java.util.TreeSet;

public class TestaTreeSet {
    public static void main(String[] args){

        //Criando Lista TreeSet.
        Set<Integer> lista = new TreeSet<Integer>();

        //Adicionando elementos de 1 a 1000.
        for(int i = 1 ; i < 1001 ; i++){
            lista.add(i);
        }

        //Imprimindo a lista em ordem crescente, mais uma segunda quebra de linha.
        System.out.println(lista+"\n");

        //Salva o último elemento da lista e exclui o mesmo logo após salvar.
        int b = ((TreeSet<Integer>) lista).pollLast();

        //Salva o primeiro elemento da lista e exclui o mesmo logo após salvar.
        int a = ((TreeSet<Integer>) lista).pollFirst();

        //exclui todos os elementos da lista.
        lista.clear();

        //laço, adicionando todos os elementos da lista inversamente.
        while(b >= a){
            lista.add(b);
            b--;
        }

        //Imprime a lista novamente em ordem crescente.
        System.out.println(lista);
    }
}

Na teoria era pra excluir todos os elementos e inseri-los novamente em ordem decrescente, pois não achei nenhum método na classe TreeSet que sirva para inverter ou mudar a ordem dos elementos.

Isso deve ser pelo fato do TreeSet implementar a interface SortedSet, por esse motivo ele ordena todos os elementos mesmo que não estejam em ordem.

Minha pergunta é, mesmo implementando a interface SortedSet, tem alguma forma de obrigar o TreeSet a inverter a ordem dos elementos?

  • Você é obrigado a fazer o algoritmo que inverte os elementos ou pode usar algum recurso do próprio TreeSet? Porque é possível sim inverter os elementos, sem precisar fazer nada de muito especial (http://stackoverflow.com/questions/1090969/treeset-to-order-elements-in-descending-order), mas não sei qual o enunciado do exercício para saber se essa solução é válida

    TerraSkilll   22 de jun de 2014
  • Obrigado TerraSkill, eu testei a sua solução e deu certo. O enunciado da questão era: Gere todos os números entre 1 e 1000 e ordene em ordem decrescente utilizando um TreeSet.

    Carlos   22 de jun de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java arrays interface collections api ou faça a sua própria pergunta.