Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida surgida no exercício 13 da aula 05 - Collections

Olá pessoal!! Fiquei com uma dúvida sobre Collections!

No exercício 13 da aula 05, sugere fazermos o comparativo de tempo para adicionar 30000 elementos na primeira posição da LinkedList x ArrayList:

import java.util.*;

public class TestaPerformance {

          public static void main(String[] args) {

              System.out.println("Iniciando...");

            long inicio = System.currentTimeMillis();
            List<Integer> lista = new ArrayList<>();

                for (int i = 0; i < 30000; i++) {
                    lista.add(0,i);
                }
        long fim = System.currentTimeMillis();
            long tempo = fim - inicio;
            System.out.println("    Tempo gasto na inserção...: "+tempo); 

            System.out.println("Valor da posição 0: "+lista.get(0)+"  \nO tamanho da lista é : "+lista.size());

            }
    }

Na última linha do código eu exibo o valor da posição 0, que já era imaginado para 29999, mas não entendi porque o tamanho da lista é de 30000.

Se eu alterar o índice do lista.get() para 1, o retorno é 29998, ou seja, tem mais de uma posição.

Minha dúvida é: achei que essa lista teria somente a posição 0.

1 resposta
solução!

Marcio, olhando a documentação do add, eu acho que ele não faz isso que você deseja. Olha só.

void add(int index, E element) Inserts the specified element at the specified position in this list (optional operation). Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices).

O que ele faz é o seguinte... Ele pega esse novo elemento, coloca na posição 0 e joga todos os outros uma posição pra frente, o 0 +1 posição, 2+1 e assim por diante.