リストって
脳死でArrayList使っていたけれど、実はいろいろあるらしい
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");
}
}
結果
Linked : 19082700 ns
Array : 14878000 ns
まぁ回数が少ないので何とも言えませんが、addだけならLinkedListの方が早いらしいです
ただ、get(0)とか、特定の要素を持ってくるのはArrayのほうが早いらしく
ただリストを作ってforループするだけならLinkedListでよく、順番とかをいっぱい使いたいならArrayって感じでしょうか
余力があればこういった細かい性能問題も考えられればうれしいです