倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Java SE 6 コレクション・フレームワークのメソッド (1) : Collection, List

以前Java SE 6 のコレクション・フレームワークに定義されているインターフェース群の型階層を簡単に見ました。 それに引き続き、今回から何回かにわたって、各インターフェースの拡張の際に追加されているメソッドを見ていきます(一覧)。

メソッドは独断と偏見で幾つかにカテゴリー分けしてます:

  • 要素の取得:iterator() や getter メソッドなど
  • 要素の追加:add() や addAll() など
  • 要素の削除:remove() や clear() など
  • 要素の削除&取得:poll() など

メソッドの役割が分かりにくそうな場合のみ別途説明を。 その他注意点

  • 拡張対象のインターフェースに定義されているメソッドには @Override アノテーションを付与してます。 ただし、インターフェースのメソッドに @Override を付与すると実際にはコンパイルエラーになります。
  • 配列に関するメソッド toArray(..) はここでは無視してます。

今回は Collection と List の2つ。 

Collection インターフェース


まずはコレクション・フレームワークの基礎となるインターフェース Collection

package java.util;
public interface Collection<E> extends Iterable<E>{
    int size();
    boolean isEmpty();
    boolean contains(Object o);
    boolean containsAll(Collection<?> c);

    // ********** 要素の取得 **********
    Iterator<E> iterator();

    // ********** 要素の追加 **********
    boolean add(E e);
    boolean addAll(Collection<? extends E> c);

    // ********** 要素の削除 **********
    boolean remove(Object o);
    boolean removeAll(Collection<?> c);
    boolean retainAll(Collection<?> c);
    void clear();
}

説明が必要そうなのは retainAll() くらいでしょうか?

  • retainAll(Collection c):引数の Collection オブジェクトに含まれている要素のみを残す(retain)。
  • add(), addAll(), remove(), removeAll(), retain() の boolean 値の返り値は、操作後に集合の要素が変更されたなら true、そうでなければ false が返されます。

List インターフェース


次は List。 これは Collection の要素に番号(インデックス)をつけたものなので、その番号を介した要素の取得・追加・設定・削除を行うメソッドが定義されています。 他に要素から番号を取得するメソッドもあります。

package java.util;
public interface List<E> extends Collection<E>{
    @Override int size();
    @Override boolean isEmpty();
    @Override boolean contains(Object o);
    @Override boolean containsAll(Collection<?> c);
    int indexOf(Object o);
    int lastIndexOf(Object o);

    // ********** 要素の取得 **********
    @Override Iterator<E> iterator();
    E get(int index);
    List<E> subList(int fromIndex, int toIndex);
    ListIterator<E> listIterator();
    ListIterator<E> listIterator(int index);

    // ********** 要素の追加 **********
    @Override boolean add(E e);
    @Override boolean addAll(Collection<? extends E> c);
    void add(int index, E element);
    boolean addAll(int index, Collection<? extends E> c);

    // ********** 要素の設定 **********
    E set(int index, E element);

    // ********** 要素の削除 **********
    @Override boolean remove(Object o);
    @Override boolean removeAll(Collection<?> c);
    @Override boolean retainAll(Collection<?> c);
    @Override void clear();

    // ********** 要素の削除&取得 **********
    E remove(int index);
}

番号が指定されていない要素の追加メソッド(add(E e), addAll(Collection c)) は、リストの一番最後に要素が追加されます。