cami-la / collections-java-api-2023

Este repositório é referente ao curso "Collection Framework API Java" e é uma valiosa contribuição para a comunidade de desenvolvedores Java, fornecendo exemplos práticos e recursos educacionais relacionados à poderosa API de coleções da linguagem Java.
https://web.dio.me/course/conhecendo-collections-java/learning/c5d6f4e1-6d05-4eea-93d8-d292c708999f
1.08k stars 796 forks source link

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

Open SteCarvalho87 opened 6 months ago

SteCarvalho87 commented 6 months ago

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 commented 6 months ago

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;
}
cami-la commented 6 months ago

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!