Marcos rodei varias vezes e a diferença é semelhante, segundo o arraylist ele quando insere tem que arrastar todos os outros elementos uma posição, coisa que não acontece nas linkedlists, logo teoricamente as linked lists a inserir devem ser mais rapidas.
O código que usei foi o que o instrutor forneceu na aula.
public class TesteListas {
public static void main(String[] args) {
System.out.println("**** ArrayList vs LinkedList ***");
List<Integer> numerosArrayList = new ArrayList<>();
List<Integer> numerosLinkedList = new LinkedList<>();
int quantidadeElementos = 1000000;
long tempoArrayList = insereElementosNo(numerosArrayList, quantidadeElementos);
long tempoLinkedList = insereElementosNo(numerosLinkedList, quantidadeElementos);
System.out.println("Inserção na ArrayList demorou " + tempoArrayList);
System.out.println("Inserção na LinkedList demorou " + tempoLinkedList);
tempoArrayList = removePrimeirosElementos(numerosArrayList);
tempoLinkedList = removePrimeirosElementos(numerosLinkedList);
System.out.println("Remoção da ArrayList demorou " + tempoArrayList);
System.out.println("Remoção da LinkedList demorou " + tempoLinkedList);
}
/*
* removendo 100 elementos sempre na primeira posição
*/
private static long removePrimeirosElementos(List<Integer> numeros) {
long ini = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
numeros.remove(0); //removendo sempre o primeiro elemento
}
long fim = System.currentTimeMillis();
return fim-ini;
}
private static long insereElementosNo(List<Integer> numeros, int quantidade) {
long ini = System.currentTimeMillis();
for (int i = 0; i < quantidade; i++) {
numeros.add(i);
}
long fim = System.currentTimeMillis();
return fim-ini;
}
}