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

porque o compareTo não compara números?

Com o método compareTo eu só posso nesse caso da aula comparar as strings? porque quando tento comparar "this.tempo " gera erro, o retorno continua sendo inteiro (-1, ou 1, ou 0) correto?

no lugar de:
@Override
    public int compareTo(Aula outraAula) {
        return this.titulo.compareTo(outraAula.titulo);
    }

eu tentei fazer:
@Override
public int compareTo(Aula outraAula) {
    return this.tempo.compareTo(outraAula.tempo);
}
3 respostas

Oi Thiago, tudo bem ?

Consegue mostrar seu código para eu conseguir te dar um feedback melhor ?



public class Aula implements Comparable<Aula> {

    private String titulo;
    private int tempo;

    public Aula(String titulo, int tempo) {
        this.titulo = titulo;
        this.tempo = tempo;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public int getTempo() {
        return tempo;
    }

    public void setTempo(int tempo) {
        this.tempo = tempo;
    }
    @Override
    public String toString() {
        return "[Aula "+this.getTitulo()+", de "+this.tempo+" minutos.]";
    }

    @Override
    public int compareTo(Aula outraAula) {
        return this.titulo.compareTo(outraAula.titulo);
    }


}
--------------------------------------------------------------

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;    

public class TestandoListas {

    public static void main(String[] args) {
        Aula aula1 = new Aula("V-Raptor", 25);
        Aula aula2 = new Aula("Play", 15);
        Aula aula3 = new Aula("SprinbBoot", 20);

        ArrayList<Aula> aulas = new ArrayList<Aula>();
        aulas.add(aula1);
        aulas.add(aula2);
        aulas.add(aula3);
        System.out.println(aulas);

        Collections.sort(aulas);

        System.out.println(aulas);

        Collections.sort(aulas, Comparator.comparing(Aula::getTempo));

        System.out.println("utilizando --> Comparator.comparing(Aula::getTempo)");
        System.out.println(aulas);

        System.out.println("--> *aulas.sort(Comparator.comparing(Aula::getTempo));*");
        aulas.sort(Comparator.comparing(Aula::getTempo));
        System.out.println("Dá no mesmo: "+aulas);

        aulas.sort(Comparator.comparing(Aula::getTempo));
    }
}
solução!

Fala ai Thiago, tudo bem ?

Você não consegue fazer isso, porque tipos primitivos não tem métodos e sim somente seu valor.

Se você fizesse com o wrapper Integer seria possível fazer, já que é uma classe e possui métodos.