ホーム > Java > 第11章-3 List

Java -List-

Listの利用

Listは、配列のように「何番目の要素か」というインデックス番号で要素にアクセスするタイプです。

いくつの要素を格納するかあらかじめ指定する必要はありません。
サイズは、要素が増えるにしたがって自動的に拡大されます。

Listインタフェースの主なメソッド
メソッド 説明
boolean add(E e) 指定された要素をリストの最後に追加します。
void add(int index, E element) リスト内の指定された位置に、指定された要素を挿入します。
void clear() すべての要素をリストから削除します。
boolean contains(Object o) リストに指定の要素がある場合に true を返します。
E get(int index) リスト内の指定された位置にある要素を返します。
int indexOf(Object o) 指定された要素がリスト内で最初に検出された位置のインデックスを返します。
Iterator<E> iterator() このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。
E remove(int index) リスト内の指定された位置にある要素を削除します。
boolean remove(Object o) 指定された要素がこのリストにあれば、その最初のものをリストから削除します。
E set(int index, E element リスト内の指定された位置にある要素を、指定された要素に置き換えます。
int size() リスト内にある要素の数を返します。
Object[] toArray() リスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)格納している配列を返します。
< T > T[] toArray(T[] a リスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)格納している配列を返します。

ArrayListの使い方

ArrayListクラスは、Listインタフェースを実装するほかに、独自のpublicメソッドを3つほど 持っていますが、それらはあまり使用されません。
これは、MapやSetなどの他の具象クラスにも言えることですが、実装したインターフェースのメソッドを 使うだけでも十分な処理ができるからです。

そのため、例えは、ArrayListクラスのオブジェクトを作成し、それをListインタフェース変数で受ける という記述がよく利用されます。

String型のListの例

List <String> list = new ArrayList <String> ();

こうして作成したlistは、Listインタフェースのメソッドだけしか利用できませんが、それで十分なことが 多く、将来、ArrayListをLinkedListへ変更する必要があった場合でもプログラムの書き換えが少なくて 済みます。

ArrayList サンプル1

import java.util.ArrayList;
import java.util.List;
public class ListSample1 {

    public static void main(String[] args) {
        List <String> list= new ArrayList <String>();
        list.add("東京");
        list.add("大阪");
        list.add("福岡");

        for(int i=0;i<list.size();i++){
            String item =list.get(i);
            System.out.println(i+" : " + item);
        }
    }
}
実行結果
0 : 東京
1 : 大阪
2 : 福岡

Listサンプル2(自作クラスを使用して)

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

class Fruit{
    String name;
    int num;
    public Fruit(String name,int num) {
        this.name=name;
        this.num=num;
    }
    void buyFruit(){
        System.out.println(name+"を"+num+"個、買いました。");
    }
}

public class ListSample2 {
    public static void main(String[] args) {
        List<Fruit> list=new ArrayList<Fruit>();
        list.add(new Fruit("りんご"2));
        list.add(new Fruit("みかん"5));
        list.add(new Fruit("もも"3));

        for(int i=0;i<list.size();i++){
            Fruit fruit=list.get(i);
            fruit.buyFruit();
        }
    }
}
実行結果
りんごを2個、買いました。
みかんを5個、買いました。
ももを3個、買いました。

Listサンプル3(主なメソッドの使用例)

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

public class ListSample3 {

    public static void main(String[] args) {
        List<String>list=new ArrayList<String>();
        //3つの要素を追加
        list.add("1月");
        list.add("4月");
        list.add("5月");
        disp(list);

        //要素を1番目の位置に挿入(最初の要素は0始まり)
        list.add(1"2月");
        disp(list);

        //2番目の要素を変更
        list.set(2"3月");
        disp(list);

        //3番目の要素を削除
        list.remove(3);
        disp(list);

        //"1月"は存在するか
        System.out.println("1月は、"+list.contains("1月"));

        //3月は何番目の要素か
        System.out.println("3月は"+list.indexOf("3月")+"番目の要素");

        //0番目の要素を取り出す
        System.out.println("0番目の要素は、"+list.get(0));
    }

    public static void disp(List<String> list){
        System.out.print("要素数="+list.size()+"\t");
        for(String str:list){
            System.out.print(str+"\t");
        }
        System.out.println("");
    }
}
実行結果
要素数=3    1月    4月    5月    
要素数=4    1月    2月    4月    5月    
要素数=4    1月    2月    3月    5月    
要素数=3    1月    2月    3月    
1月は、true
3月は2番目の要素
0番目の要素は、1月