6
respostas

Collections não reconhecido

Boa noite eu estou fazendo o código identico do instrutor porém mesmo substituindo o codigo não compila!

package br.com.alura;

import java.util.*;

public class TestaCurso2 {

    public static void main(String[] args) {

        Curso javaColecoes = new Curso("Dominando as coleções do Java",
                "Paulo Silveira");

        javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
        javaColecoes.adiciona(new Aula("Modelando com colecoes", 24));

        List<Aula> aulas = javaColecoes.getAulas();
        System.out.println(aulas);

        Collections.sort(aulas);
        System.out.println(aulas);

    }
}
6 respostas

Oi João

Qual a mensagem de erro que esta aparecendo para você?

O erro é nessa linha especifica

Collections.sort(aulas);

Está dizendo que o metodo generico List não é aplicavel para o argumento List porém meu codigo esta exatamente igual ao do instrutor e como está no meu codigo acima pelo menos parece que estou fazendo a importação correta das bibliotecas java

Boa noite, João!

Acredito que devido ao código "Collections,unmodifiableList" da classe Curso, você não pode mais executar diretamente o "Collecitons.sort(aulas)" ou qualquer outra modificação na List Aula. Para o código executar conforme o desejado é necessário criar uma nova lista herdando a lista "Aula" e a partir dela utilizar o sort. Vou citar um exemplo para ficar mais claro.

import java.util.*;

public class TestaCurso2 {

    public static void main(String[] args) {

        Curso javaColecoes = new Curso("Dominando as coleções do Java",
                "Paulo Silveira");

        javaColecoes.adiciona(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adiciona(new Aula("Criando uma Aula", 20));
        javaColecoes.adiciona(new Aula("Modelando com colecoes", 24));

        List<Aula> aulas = javaColecoes.getAulas();
        System.out.println(aulas);

        //Cria uma nova lista para receber os valores. 
        List<Aula> aulasPodeOrdenar = new LinkedList<>(aulas);

        // Ordenação
        Collections.sort(aulasPodeOrdenar);

        System.out.println(aulasPodeOrdenar);

    }
}

Espero ter ajudado!

Desejo sucesso!

Copiei seu codigo e colei na IDE inicialmente para testes e o erro persiste =(

Tem alguma função pra mandar um print da tela? O erro é na linha das aulasPodeOrdenar

Olá João, a sua classe Aula implementa comparable?

public class Aula implements Comparable<Aula>{

    private String titulo;
    private Integer tempo;

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

    public String getTitulo() {
        return titulo;
    }

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

    public Integer getTempo() {
        return tempo;
    }

    public void setTempo(Integer tempo) {
        this.tempo = tempo;
    }

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