目次へ

解答例 - 実習課題1 - 2.ListとIterator

(実習課題1)

「ArrayList」と「LinkedList」の性能を比較するプログラムを作成しなさい。

  • あらかじめ100万個の要素をリストに追加しておく。
  • それに対して「ランダムアクセス」「検索」「追加」「挿入」「削除」メソッドの実行に掛かる時間を計測し、表示する事。
  • (ヒント)時間の計測には「System」クラスの「currentTimeMillis」メソッドを使用する。

解答例

package com.techscore.utility.chapter2.exercise1;

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

/**
 * ListExample.java
 * TECHSCORE Javaユーティリティ2章 実習課題1 
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
public class ListExample {

    public static void measureProcessTime(List list) {

        //ランダムアクセス
        Random random = new Random();
        long before = System.currentTimeMillis();
        list.get(random.nextInt(1000000));
        long after = System.currentTimeMillis();
        long time = after - before;

        System.out.println("Complete Random Access");
        System.out.println("Time:" + time + " ms");

        //検索
        before = System.currentTimeMillis();
        list.indexOf(new Integer(6875764));
        after = System.currentTimeMillis();
        time = after - before;

        System.out.println("Complete Find");
        System.out.println("Time:" + time + " ms");

        //追加
        before = System.currentTimeMillis();
        list.add(new Integer(1000000));
        after = System.currentTimeMillis();
        time = after - before;

        System.out.println("Complete Adding");
        System.out.println("Time:" + time + " ms");

        //挿入
        before = System.currentTimeMillis();
        list.add(1, new Integer(1111111));
        after = System.currentTimeMillis();
        time = after - before;

        System.out.println("Complete Insert");
        System.out.println("Time:" + time + " ms");

        //削除
        before = System.currentTimeMillis();
        list.remove(1);
        after = System.currentTimeMillis();
        time = after - before;

        System.out.println("Complete Delete");
        System.out.println("Time:" + time + " ms");

    }

    public static void main(String args[]) {

        System.out.println("----Array List ------");
        List arrayList = new ArrayList();

        for (int i = 0; i < 1000000; i++) {
            arrayList.add(new Integer(i));
        }

        ListExample.measureProcessTime(arrayList);

        System.out.println("---- Linked List ------");
        List linkedList = new LinkedList();

        for (int i = 0; i < 1000000; i++) {
            linkedList.add(new Integer(i));
        }

        ListExample.measureProcessTime(linkedList);

    }
}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp