Ich habe ArrayList wegen des Hirntods verwendet, aber es scheint, dass es tatsächlich verschiedene Dinge gibt.
LinkedArrayListTest.java
package listTest;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class LinkedArrayListTest {
public static void main(String[] args) {
measure(1000000);
}
private static void linked(int num) {
List<String> list = new LinkedList<>();
for (int i = 0; i < num; i++) {
list.add("asd");
}
}
private static void array(int num) {
List<String> list = new ArrayList<>();
for (int i = 0; i < num; i++) {
list.add("asd");
}
}
public static void measure(int num) {
Long start = System.nanoTime();
linked(num);
Long middle = System.nanoTime();
array(num);
Long end = System.nanoTime();
System.out.println("Linked : " + (middle - start) + " ns\r\nArray : " + (end - middle) + " ns");
}
}
Ergebnis
Linked : 19082700 ns
Array : 14878000 ns
Nun, ich kann nichts sagen, weil die Anzahl der Male gering ist, aber es scheint, dass LinkedList schneller ist, wenn man nur hinzufügt
Es scheint jedoch, dass Array bestimmte Elemente wie get (0) schneller einbringt.
Wenn Sie nur eine Liste und eine for-Schleife erstellen möchten, können Sie LinkedList verwenden. Wenn Sie viel Reihenfolge verwenden möchten, ist dies wie bei Array.
Wenn noch Kapazitätsreserven vorhanden sind, würde ich mich freuen, wenn solche geringfügigen Leistungsprobleme in Betracht gezogen werden könnten.
Recommended Posts