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

Necessidade de uso ArrayList e LinkedList

A classe Curso nesta aula inicializa o atributo aulas com LinkedList. Ficou claro que isso pode ser alterado em qualquer momento na própria classe Curso.

Se em pontos diferentes do meu projeto eu precisar que seja ArrayList e no outro LinkedList. Qual seria a melhor maneira para implementar a classe Curso para conviver com as duas necessidades ?

2 respostas

O mais correto é você declarar como List porque ambas as implementações LinkedList e ArrayList implementam a interface List, deste modo, graças ao Polimorfismo você pode utilizar um tipo menos especifico para declarar suas variáveis. Utilizando desta forma o retrabalho para modificar a de um tipo para o outro será quase nulo.

Exemplos:

List<String> nomes = new LinkedList<String>();
nomes.add("Eduardo");
nomes.add("Rafael");

for (String nome : nomes) {
    System.out.println(nome);
}
List<String> nomes = new ArrayList<String>();
nomes.add("Eduardo");
nomes.add("Rafael");

for (String nome : nomes) {
    System.out.println(nome);
}

Como você pode notar, na declaração utilizei apenas a interface List.

solução!

Na verdade eu me refiro quando há necessidade de criar um atributo de uma classe com uma lista e ela precisa ser inicializada .

public class Curso {
    private String nome;
        private String instrutor;
        private List<Aula> aulas = new LinkedList<>();

Veja que eu preciso incializar lista em algum momento. Até mesmo pelo motivo de necessidade de devolver esta lista com um possível método getAulas(), por exemplo. Declarando o atributo dessa maneira facilmente é mudado, mas se em um dado momento eu preciso usar Arraylist por algum motivo ou vice versa, terei que estar mudando esta classe.