6
respostas

O exemplo dado: aulas.sort(Comparator.comparing(Aula::getTempo)); Não funciona

Estou usando Java 8, apresenta erro de sintaxe, consigo fazer dessas duas outras formas, mas gostaria de seguir a aula conforme apresentada

Collections.sort(aulas,  new Comparator<Aula>() {
            public int compare(Aula a1, Aula a2){
                return a1.getTempo().compareTo(a2.getTempo());
            }
        });
aulas.sort(new Comparator<Aula>() {
            public int compare(Aula a1, Aula a2){
                return a1.getTempo().compareTo(a2.getTempo());
            }
        });
6 respostas

Opa Fabio, blz?

Qual o erro de compilação que você está recebendo? Pergunto porque a sintaxe do java 8 apresentada no treinamento está correta... Será que você está com o java8 configurado no projeto? Se quiser, manda aqui o código também.

Oi Fábio, tudo bem ?

É exibido algum erro para você ?

Ambas sintaxes estão corretas.

A unica mensagem dada pela IDE:

Multiple markers at this line
    - getTempo cannot be resolved to a 
     variable
    - Syntax error on token ")", ++ expected
    - Syntax error on token ":", invalid (
    - Syntax error on token(s), misplaced 
     construct(s)

Anderson o código é

package br.com.alura;

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

import br.com.alura.Aula;


public class TestaListaDeAula {

    public static void main(String[] args) {
        Aula a1 = new Aula("Abcd", 21);
        Aula a2 = new Aula("Abc", 20);
        Aula a3 = new Aula("Abc", 15);

        ArrayList<Aula> aulas = new ArrayList<>();
        aulas.add(a1);
        aulas.add(a2);
        aulas.add(a3);


        // antes de ordenar:
        System.out.println(aulas);
        aulas.sort(Comparator.comparing(Aula::getTempo));
    // depois de ordenar:
    System.out.println(aulas);
        }
}

Olá Fabio, boa noite

Na sua classe Aula tem o método getTempo ? Posta sua classe Aula aqui pra gente.

Abraços!

package br.com.alura;

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 int getTempo() {
        return tempo;
    }

    @Override
    public String toString() {
        return "[Aula: " + this.titulo + ", " + this.tempo + " minutos]";
    }

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