Diferenças entra List, Arraylist e LinkedList

Bom dia,
Eu estou estudando Java com curso que realizei, qual diferença entre List, Arraylist e LinkedList?
Estou voltando a estudar e qual diferença seria entre um e outro?
Em vetor, é algo mais estático, que depois somente aqueles arrays, já os ArrayList é mais volátil, pode diminuir ou aumentar…
Gostaria de saber a diferença entre um e esses outros. :thinking::thinking::thinking:

Dá uma lida neste link:
https://www.devmedia.com.br/diferenca-entre-arraylist-vector-e-linkedlist-em-java/29162

List é uma interface, ArrayList é uma das possíveis implementações da interface List, LinkedList é uma lista duplamente encadeada.
Para compreender sobre o uso e a aplicabilidade de cada uma eu indico você praticar com exercícios.

OK. por exemplo na LinkedList eu poderia em Uma lista de Cidades dentro de São Paulo por exemplo ter a capital, ter Santo André, Diadema, etc… dentro de São Paulo ter os bairros, Santo Amaro, Capão Redondo, Vila Clara, Jardim Miriam, seria esse exemplo a grosso modo?

Pegando seu exemplo, a ArrayList será carregado com cidades. E cada cidade tem quantidade de habitantes, um prefeito, densidade demografica, bairros etc.

Dai sua ArrayList terá cidades, sendo que cada uma será carregadas com esses dados.
Por isso a Arraylist eh muito usada como lista de objetos. Carrega-se um objeto, e joga-se na ArrayList.

Tem-se uma classe de modelo, onde será carregado as informaçoes do objeto, depois basta ir setando a ArrayList com o objeto, entendeste?

Exemplificando:

Teríamos uma classe CidadeModel, onde teria variáveis responsáveis por carrregar o prefeito, densidade demografica, população etc.

public class CidadeModel {
    
    private String prefeito;
    private double densidadeDemo;
    private double populacao;

    public String getPrefeito() {
        return prefeito;
    }

    public void setPrefeito(String prefeito) {
        this.prefeito = prefeito;
    }

    public double getDensidadeDemo() {
        return densidadeDemo;
    }

    public void setDensidadeDemo(double densidadeDemo) {
        this.densidadeDemo = densidadeDemo;
    }

    public double getPopulacao() {
        return populacao;
    }

    public void setPopulacao(double populacao) {
        this.populacao = populacao;
    }
   
}

Em seguida, criamos uma ArrayList do tipo CidadeModel em outra classe (talvez em uma controladora, caso esteja usando arquitetura MVC) para esta receber informaçoes referentes a esta classe:

List<CidadeModel> cidadesList = new ArrayList<>();

Em outra classe criamos um objeto desta classe citada acima, por exemplo: CidadeModel cidade = new CidadeModel(). Daí setamos este objeto (usando o setters das variáveis) com informaçoes, por exemplo que o usuário tenha digitado.
Logo após, setamos a ArrayList criada com o objeto, visto que agora ele está com as variáveis preenchidas:

cidade.setPrefeito("Roberto Lemos");
cidade.setDensidadeDemo(256);
cidade.setPopulacao(459,346);

cidadesList.add(cidade) // adicionando à ArrayList o objeto setado anteriormente.

Daí quando você iterar a ArrayList, lá também terá os campos (as variáveis) que seu objeto também tem.

Espero que tenha ficado mais claro para você.

1 curtida

List é uma interface para definir o comportamento de estruturas do tipo lista.

LinkedList é uma implementação de List que internamente utiliza alocação dinâmica de memória com uma estrutura de dados que conecta cada elemento inserido com o anterior, se houver, como se fossem os elos de uma corrente, por isso se chama LinkedList, lista encadeada.

ArrayList é uma implementação de List que internamente utiliza arrays para armazenar seus elementos, quando esses arrays atingem em torno de 75% de sua capacidade, novos arrays são alocados.

Na prática o acesso indexado aos elementos do ArrayList é mais rápido do que no LinkedList, entenda como acesso indexado a operação minhaLista.get(posicao).

Já a alocação de memória do LinkedList é menor do que o ArrayList.

1 curtida