collections-java-api-2023 icon indicating copy to clipboard operation
collections-java-api-2023 copied to clipboard

Exercício Ordenação Numeros - Erro na Sintaxe(Collections.reverseOrder)

Open SteCarvalho87 opened this issue 1 year ago • 2 comments

Boa tarde, Camila !

Estou escrevendo o código para a resolução do exercício mas o IntelliJ informa que há uma redundancia no código que não estou sabendo como resolver. procurei nas aulas mas não encontrei a forma correta de se onrdenar de forma inversa. Segue o print do erro e o trecho do código:

OBS: Eu implementei o Comparable na Classe Pessoa

image

package main.java.list.Ordenacao;

import main.java.list.Pesquisa.Numeros;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static java.util.Collections.*;

public class OrdenacaoNumeros {
    private List<NumerosInteiros> listaNumeros;

    public OrdenacaoNumeros() {
        this.listaNumeros = new ArrayList<>();
    }

    public void adicionarNumero(int  numero) {
        listaNumeros.add(new NumerosInteiros(numero));
    }

    public List<NumerosInteiros> ordenarAscendente() {
        List<NumerosInteiros> listaAscendente = new ArrayList<>(listaNumeros);
        Collections.sort(listaAscendente);
        return listaAscendente;
    }

    public List<NumerosInteiros> ordenarDescendente() {
        List<NumerosInteiros> listaDescendente = new ArrayList<>(listaNumeros);
        Collections.reverseOrder(listaDescendente);
        return listaDescendente;
    }
}

Te agradeço muito a orientação, Stephanie

SteCarvalho87 avatar May 14 '24 20:05 SteCarvalho87

Camila, fiz minhas próprias pesquisas e consegui. Vou compartilhar o resultado para caso mais alguém tenha uma dúvida parecida:

O método Collections.reverseOrder() retorna um comparador que impõe a ordem inversa de um comparador fornecido. Se nenhum comparador for fornecido, ele retorna um comparador que inverte a ordem natural dos elementos. No entanto, ele não ordena uma lista.

Se você deseja ordenar a lista em ordem decrescente, você deve usar o método Collections.sort() com o comparador fornecido por Collections.reverseOrder(). Aqui está como você pode fazer isso:

public List<NumerosInteiros> ordenarDescendente() {
    List<NumerosInteiros> listaDescendente = new ArrayList<>(listaNumeros);
    Collections.sort(listaDescendente, Collections.reverseOrder());
    return listaDescendente;
}

SteCarvalho87 avatar May 14 '24 20:05 SteCarvalho87

oi @SteCarvalho87, tudo certinho?? Parabéns pelos estudos!!

Então, eu resolvi esses exercícios aqui: https://github.com/cami-la/collections-java-api-2023/blob/master/src/main/java/list/Ordenacao/OrdenacaoNumeros.java

public List<Integer> ordenarDescendente() {
    List<Integer> numerosAscendente = new ArrayList<>(this.numerosList);
    if (!numerosList.isEmpty()) {
      numerosAscendente.sort(Collections.reverseOrder());
      return numerosAscendente;
    } else {
      throw new RuntimeException("A lista está vazia!");
    }
  }

No repositório tem algumas sugestões de soluções. Mas continue assim, você está se saindo muito bem!

Bons estudos para nós!

cami-la avatar May 14 '24 21:05 cami-la