4
4

More than 5 years have passed since last update.

LinkedListとArrayListの要素削除速度比較

Posted at

要素を削除したりする場合はArrayListよりLinkedListのほうが速い、ということは本で読んだので、実際どの程度違うのか、自分のマシンやってみた。
確かに、LinkedListはちょっぱやで、60~100倍くらい速かった。
ArrayListだけの方は実行する度処理時間が大きく変わった。
LinkedListの方は、ArrayListで生成したリストをaddAllしているんだけど、大したコストではない模様。

出力

after ArrayList iterator removal:list.size() = 0
処理時間:1146ミリ秒
after LinkedList iterator removal:list.size() = 0
処理時間:18ミリ秒

コード


import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class Test {

    static int NUM = 100000;
    static String STR = "123456";
    public static void main(String[] args) {
        Test test = new Test();
        long a = System.currentTimeMillis();

        test.arrayListOnlyIteration();
        long b = System.currentTimeMillis();

        //計測
        System.out.println("処理時間:" + (b - a) + "ミリ秒");
        test.arrayListAndLinkedListIteration();

        //計測
        System.out.println("処理時間:" + (System.currentTimeMillis() - b) + "ミリ秒");
    }

    private void arrayListAndLinkedListIteration() {
        // TODO Auto-generated method stub
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < NUM; i++) {
            list.add(STR);
        }
        LinkedList<String> ll = new LinkedList<String>();
        ll.addAll(list);
        Iterator<String> it = ll.iterator();
        while (it.hasNext()) {
            it.next();
            it.remove();
        }
        list = new ArrayList<String>();
        list.addAll(ll);
        System.out.println("after LinkedList iterator removal:list.size() = " + list.size());
    }

    private void arrayListOnlyIteration() {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < NUM; i++) {
            list.add(STR);
        }
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            it.next();
            it.remove();
        }
        System.out.println("after ArrayList iterator removal:list.size() = " + list.size());
    }

}

以上になります。

4
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4