JavaA2Z

KAB-studio > プログラミング > JavaA2Z > ArrayListとは

ArrayList

日本語 配列表
英語 array list
ふりがな あれいりすと
フリガナ アレイリスト

解説

J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名java.util.ArrayList。
可変長配列を実現するクラス。add()メソッドで追加でき、get()メソッドで取得する。
コレクションの代表的なクラス。これひとつあればだいたい事足りる。
要素としてObjectクラスサブクラス、つまりあらゆるクラスを受け取れる。しかしそのため、要素として格納されているが不明のため、ClassCastExceptionが発生する可能性大。
可変長配列として使用する目的にのみ使用し、それ以外は配列を使用するのがお勧め。また、J2SE5.0ではgenericsの使用をすべき。
Javaでは「引数参照経由で値を返す」のが難しいため、メソッド戻り値としてArrayListを返し、その中に「複数の戻り値」として値を返すという「テクニック」があるが、メソッドの中身を見なければどの要素にどのの値が格納されているか分からず、バグの温床となりやすいため、この使用方法はすべきではない。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.ArrayList;

public class Sample
{
    public static void main( String[] args )
    {
        // ArrayListを使用します。
        ArrayList arylst = new ArrayList();
        // 要素を追加します。
        arylst.add( new Integer( 100 ) );
        // 要素を取り出します。
        System.out.println( arylst.get( 0 ) );
        // 100

        // 配列に変換もできます。
        Integer[] integers = (Integer[])arylst.toArray( new Integer[0] );
        System.out.println( integers[0] );
        // 100

        // add()の引数はObjectなので、クラスならなんでも受け取れます。
        arylst.add( "あいうえお" );
        // つまり、要素に入れる型は統一しなくてもOK
        System.out.println( arylst.get( 1 ) );
        // あいうえお
        
        // むしろそれが危険……。
        try
        {
            Integer integer = (Integer)arylst.get( 1 );
        }
        catch( ClassCastException e )
        {
            e.printStackTrace();
            // java.lang.ClassCastException
            //     at Sample.main(Sample.java:30)
            // Integerが入ってると思ったらString。
            // J2SE5.0ならgenericsの使用をお勧めします。
            // それ以外は配列を使用しましょう。
        }

        // 最悪、戻り値の型として「複数の値を返す」目的に
        // 使われることもあります。
        Sample sample = new Sample();
        ArrayList badArrayList = sample.getDatas();
        System.out.println( badArrayList.get( 0 ) );
        // 文字列1
        System.out.println( badArrayList.get( 1 ) );
        // 200
        // この方法は「複数の値を戻り値として返せる」というメリットに対して、
        // 「メソッドの実装を見ないとどの要素にどの型の値が格納されているのかわからない」
        // というデメリットが非常に大きいです。
        // こういう使い方は絶対にしないようにしましょう。
    }

    /**
    *    ArrayListを戻り値として返す例(悪例です。やっちゃダメよ)。
    */
    private ArrayList getDatas()
    {
        ArrayList arylst = new ArrayList();
        // 0番目に文字列、1番目に整数値を格納します。
        arylst.add( "文字列1" );
        arylst.add( new Integer( 200 ) );
        return arylst;
    }
}
// Sample.java
import java.util.ArrayList;

public class Sample
{
    public static void main( String[] args )
    {
        // ArrayListを使用します。
        ArrayList arylst = new ArrayList();
        // 要素を追加します。
        arylst.add( new Integer( 100 ) );
        // 要素を取り出します。
        System.out.println( arylst.get( 0 ) );
        // 100

        // 配列に変換もできます。
        Integer[] integers = (Integer[])arylst.toArray( new Integer[0] );
        System.out.println( integers[0] );
        // 100

        // add()の引数はObjectなので、クラスならなんでも受け取れます。
        arylst.add( "あいうえお" );
        // つまり、要素に入れる型は統一しなくてもOK
        System.out.println( arylst.get( 1 ) );
        // あいうえお
        
        // むしろそれが危険……。
        try
        {
            Integer integer = (Integer)arylst.get( 1 );
        }
        catch( ClassCastException e )
        {
            e.printStackTrace();
            // java.lang.ClassCastException
            //     at Sample.main(Sample.java:30)
            // Integerが入ってると思ったらString。
            // J2SE5.0ならgenericsの使用をお勧めします。
            // それ以外は配列を使用しましょう。
        }

        // 最悪、戻り値の型として「複数の値を返す」目的に
        // 使われることもあります。
        Sample sample = new Sample();
        ArrayList badArrayList = sample.getDatas();
        System.out.println( badArrayList.get( 0 ) );
        // 文字列1
        System.out.println( badArrayList.get( 1 ) );
        // 200
        // この方法は「複数の値を戻り値として返せる」というメリットに対して、
        // 「メソッドの実装を見ないとどの要素にどの型の値が格納されているのかわからない」
        // というデメリットが非常に大きいです。
        // こういう使い方は絶対にしないようにしましょう。
    }

    /**
    *    ArrayListを戻り値として返す例(悪例です。やっちゃダメよ)。
    */
    private ArrayList getDatas()
    {
        ArrayList arylst = new ArrayList();
        // 0番目に文字列、1番目に整数値を格納します。
        arylst.add( "文字列1" );
        arylst.add( new Integer( 200 ) );
        return arylst;
    }
}

この単語を含むページ

「みだし」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/04/02
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。