以前に 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)) は、リストの一番最後に要素が追加されます。