Galera,
Li vários post aqui no guj, materiais na web e claro os livros para certificação, sei que Collections cai em muitas questões do exame, até mesmo quando é cobrado outro tópico.
Gostaria de tirar uma dúvida em relação a diferença de ArrayList e LinkedList, li sobre as desvantagens e vantagens de cada uma se tratando de inserção, exclusão e iteração.
Fiquei confuso em relação a essas vantagens
a principio(bem resumidamente) seria isso:
ArrayList: melhor para iterar
LinkedList: melhor para inserir e excluir
Acompanhei alguns post do pessoal falando, sobre diferença de performance usando iterator, for simples etc…
Enfim… fiz esse “pequeno” trecho de código para testar a performance das listas:
//imports aqui
public class Main2 {
public static void main(String[] args) {
List al = new ArrayList();
List ll = new LinkedList();
preencheLista(al);
preencheLista(ll);
obtemLista(al);
//obtemLista(ll); aqui o pc até trava EDITEI AQUI, A VARIAVEL ESTAVA ERRADA (mesmo assim trava)
obtemListaIterator(al);
obtemListaIterator(ll);
}
public static void preencheLista(List l) {
long inicio = System.currentTimeMillis();
for(int i=0;i<900000;i++) {
l.add(i);
}
System.out.println("Tempo para inserir: " + (System.currentTimeMillis() - inicio));
}
public static void obtemLista(List l) {
long inicio = System.currentTimeMillis();
for(int i=0;i<l.size();i++) {
l.get(i);
}
System.out.println("Tempo para obter usando for simples: " + (System.currentTimeMillis() - inicio));
}
public static void obtemListaIterator(List l) {
long inicio = System.currentTimeMillis();
Iterator it = l.iterator();
while(it.hasNext()) {
it.next();
}
System.out.println("Tempo para obter usando Iterator: " + (System.currentTimeMillis() - inicio));
}
}
Conforme vocês podem notar, o código não está bem limpinho e padroes bean hehheh, mas o foco aqui é para exiber os resultados.
Por que quando eu adiciono na lista LinkedList demora mais do que no ArrayList? o certo não é inserir com mais velocidade em LinkedList?
O que fiz de errado para fazer o teste? ou o resultado seria esse mesmo?!
Aproveitando…
Quem tiver algum outro material de collections para poder compartilhar ficarei agradecido, pois estou tentano aprimorar nesse tópico, uma vez que usamos estrutura de dados o tempo todo em programas. Já li no livro da Kathy e outros livros, materias da web etc… mas que tiver algo a mais será bem vindo…
valeu.