Java List/ArrayListよくある使い方

2009/01/30 13:02Update
TAGS: Java | コレクション | Collection | List | ArrayList | リスト | 反復子 | Iterator

サンプルからJavaの List/ArrayListよくある使い方について学びます。

コレクションは、「要素である複数のオブジェクトの集まり」を表すものです。Java List(リスト)は、順序付けられたコレクションです。「シーケンス」とも呼ばれます。リスト内のどこに要素が挿入されるか、インデックス (リスト内の位置) によって要素にアクセスしたり、リスト内の要素を検索したりすることができます。

構造



java.util.Collection
∟java.util.List
 ∟java.util.ArrayList
 ∟java.util.LinkedList
 ∟java.util.Stack
 ∟java.util.Vector

本文はjava.util.ArrayListの基本的な使い方を紹介します。

次のサンプルは、ArrayListから生成されたListインスタンスのListに要素の追加、Listから要素の取得・削除などについて簡単に説明しています。

List/ArrayListサンプル


package com.test.list;

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

/**
 * Java List/ArrayListの使い方についてシンプルなサンプル
 *
 * 1)Listインスタンスの生成
 * 2)Listに要素の追加
 * 3)Listから要素の取得
 * 4)Listから要素の削除
 */
public class TestArrayList {
    public static void main(String []args) {
        ////////////////////////////////////
        //1)ArrayListからListのインスタンスを生成
        List list = new ArrayList();    //その他コンストラクタもあります。詳細はAPI DOCを参照
        
        ////////////////////////////////////
        //2)Listに要素の追加
        list.add("Hello Java List!");   //String型
        list.add(new Integer(100));     //Integer型
        //...   その他型の値の追加もできますよ
        
        
        ////////////////////////////////////
        //3)Listから要素の取得
        
        //取得方法1:indexによる取得
        String strValue = (String)list.get(0);      //0番はStringの場合
        Integer intValue = (Integer)list.get(1);    //1番はIntegerの場合
        
        System.out.println("1番目のオブジェクト値:" + strValue);
        System.out.println("2番目のオブジェクト値:" + intValue);
        
        
        System.out.println("************** Iterator **************");
        //反復子iteratorによる取得
        Iterator ite = list.iterator();     //実際のプログラム中に、null判定を忘れずに
                                            //コレクションの反復子iterator
        while(ite.hasNext()) {              //ループ
            Object obj = ite.next();        //該当オブジェクト取得
            
            if (obj instanceof String) {    //String型の場合
                System.out.println((String)obj);
            } else if (obj instanceof Integer) {    //Integer型の場合
                System.out.println(((Integer)obj).intValue());
            }
            
        }
        
        System.out.println("************** for (int i=0; i<list.size(); i++)**************");
        //for ループによる取得
        for (int i=0; i<list.size(); i++) {
            Object obj = list.get(i);        //該当オブジェクト取得
            
            if (obj instanceof String) {    //String型の場合
                System.out.println((String)obj);
            } else if (obj instanceof Integer) {    //Integer型の場合
                System.out.println(((Integer)obj).intValue());
            }
        }
        
        System.out.println("************** for (Object obj : list) **************");
        //Java5から
        for (Object obj : list) {
            if (obj instanceof String) {    //String型の場合
                System.out.println((String)obj);
            } else if (obj instanceof Integer) {    //Integer型の場合
                System.out.println(((Integer)obj).intValue());
            }
        }
        
        //4)Listから要素の削除
        list.remove(0);
    }
}


実行します。
c:\javac com/test/list/TestArrayList.javac

c:\java com.test.list.TestArrayList
1番目のオブジェクト値:Hello Java List!
2番目のオブジェクト値:100
************** Iterator **************
Hello Java List!
100
************** for (int i=0; i<list.size(); i++)**************
Hello Java List!
100
************** for (Object obj : list) **************
Hello Java List!
100

参考資料


Javaコレクション・フレームワーク概要
Iteratorパターン - イテレータ・パターン - オブジェクト指向設計
java.util.List のAPI doc
java.util.ArrayList のAPI doc

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments