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.
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ê.
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
.