ArrayList versus LinkedList

1 resposta
F

Aê pessoal,

eu curioso com os estudos sobre a perfomance da classes que implementam Collection fiz um pequeno teste , e queria ver se entendi certo... ou se fiz besteira no codigo pra tentar entender ....uhauauauha
mas eh isso....
Pelo q estudei ... o LinkedList é melhor quando voce quer inserir muitos elementos no meio da Colecao ... mas naum eh o q parece ... quer dizer
... acho q tentei fazer da maneira q entendi ...
se alguem tem alguma explicacao ... pode postar pra gente vê na simulacao se a teoria eh mesmo compativel com a pratica!!!

public static void main(String[] args) {
    ArrayList c1 = new ArrayList();
    LinkedList c2 = new LinkedList();
    
    
    for (int i=0; i<1000; i++){
      c1.add(new Integer(i));
      c2.add(new Integer(i));
    }

    double l1 = System.currentTimeMillis();
    int pos = 0;
    for(int i=0;i<10000;i++){
       pos = (int)( (c1.size()/2) - 10);
       c1.add( pos, new Integer(i)) ;      
      
    }
    double l2 = System.currentTimeMillis() - l1;
    double tempo = l2/1000;
    System.out.println("tempo do ArrayList: " + tempo + " s");

    l1 = System.currentTimeMillis();
    pos = 0;
    for(int i=0;i<10000;i++){
       pos = (int)( (c2.size()/2) - 10);
       c2.add( pos, new Integer(i)) ;      
    }
    l2 = System.currentTimeMillis() - l1;
    tempo = l2/1000;
    System.out.println("tempo do LinkedList: " + tempo + " s");
    
  }

1 Resposta

F

OK!
hehehehe … dei uma corrida no livro … e ele me explicou …
mas pouts… podia ter percebido antes…
na verdade o método que vc passa um inteiro q indica a posicao,
pro LinkedList , como get(pos) , ou add(pos) … naum eh muito eficiente…
A LinkedList Não é a estrutura correta para usar indices para acessar elementos !!! o livro diz que é extremamente ineficiente … rrsrs… e o exemplo q dei … confirmou …
Com o LinkedList … sempre q eu buscar um elemento ele comeca do primeiro elemento … O objeto LinkedList não faz nenhum esforço de colocar as informações de posicao em cache …

é isso … agora podia ter relacionado melhor … com pilhas e filas … q eh essa a ideia do LinkedList… e como pilhas e filas … naum se deve adicionar no meio … e sim no final … e a depender … da estrutura … ou tira do inicio ou do fim …

E para esclarecer … eu me confundi … o LinkedList eh muito melhor para se inserir no inicio ou no final da colecao …

Desculpa ai qq coisa !! uhauhauhaa

Criado 2 de março de 2005
Ultima resposta 3 de mar. de 2005
Respostas 1
Participantes 1