Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

ArrayListクラス

可変長配列を利用する – ArrayListクラス

ArrayListは、内部的には配列を利用したリスト構造です。標準的な配列と異なる点は、サイズを後からでも変更できる点です。その性質上、インデックス値による値の読み書きは高速ですが、要素の挿入/削除は、配列サイズが大きくなるほど、また、操作位置が先頭に近くなるほど遅くなります。
ArrayListクラスで利用できるメソッドには、以下のようなものがあります。

ArrayListクラスで利用できる主なメソッド
メソッド 概要
add([int index,] E e) 指定位置indexに要素eを挿入(index省略で末尾に挿入)
clear() リストからすべての要素を削除
contains(Object e) リストに要素oが含まれているかを判定
get(int index) index番目の要素を取得
indexOf(Object e) 要素oが登場する最初のインデックス値を取得
isEmpty() リストが空か判定
remove(int index|Object o) 指定の要素を削除
set(int index, E e) index番目の要素を設定
int size() リストに含まれる要素の数を取得

以下は、ArrayListに要素をセットし、その値を順に出力する例です。

CollList.java

package com.example.mynavi.collection;

import java.util.ArrayList;
import java.util.List;

public class CollList {
  public static void main(String[] args) {
    List<String> list = new ArrayList<String>() {
      {
        add("Windows");
        add("Linux");
        add("OS X");
      }
    };

    for (String str : list) {
      System.out.println(str);	// 結果:Windows、Linux、 OS X
    }

    System.out.println("2番目の要素は" + list.get(1));
	// 結果:2番目の要素はLinux
    System.out.println(list.contains("Linux"));	// 結果:true

    if (!list.isEmpty()) {
      System.out.println("要素数は" + list.size() + "個です。");
	// 結果:要素数は3個です。
    }

    list.remove(0);
    System.out.println(list);	// 結果:[Linux, OS X]

    list.clear();
    System.out.println(list);	// 結果:[]
  }
}

ArrayListへの挿入に際しては、メモリーの再割り当てが発生する可能性がある点に注意してください。というのも、ArrayListはあらかじめ一定サイズの領域を準備していますが、これが不足していると、自動的にサイズを拡張しようとするのです。
しかし、サイズの拡張はオーバーヘッドの大きな処理なので、できるだけ避けるべきです。最初から必要なサイズが判っている場合には、インスタンス化に際してサイズを明示的に宣言しておくことをお勧めします。デフォルトのサイズは10です。

List<String> list = new ArrayList<String>(50);
コレクションフレームワーク
コレクションフレームワーク
コレクションを初期化する
synchronizedList/synchronizedMap/synchronizedSetメソッド
ArrayListクラス
asListメソッド
toArrayメソッド
LinkedList
HashMap
TreeMap
NavigableMap
HashSet
ArrayDeque

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職