miyabihitoの日記

個人的な技術メモ

コレクションフレームワーク

Iterableインターフェース
実装したクラスはforeachに使える。
メソッド
Iterator iterator():イテレータ(反復子)を返す。

Iteratorインターフェース
コレクションの各要素にアクセスする手段を提供するインターフェース
メソッド
hasNext():次の要素の有無
next():次の要素を返す
remove():nextで返した要素の削除

ListIteratorインターフェース
Iteratorの機能拡張(Listのみで提供)
メソッド
hasPrevious:前の要素の有無
previous:前の要素を返す
set:対象としている要素の置き換え

Collection extends Iterable
コレクションのルートインターフェース
要素の追加・削除などのコレクションフレームワークに共通のメソッドが定義されている。

List extends Collection
順序付けられたコレクションを管理する。
配列と同様に0から始まるインデックスで、各要素にアクセスできる。
ListIteratorという特殊なイテレータを返す事ができる。(要素の挿入や、双方向の探索ができる。)

メソッド
add:要素の追加、位置も指定できる
clear:要素の全削除
get:指定した位置の要素の取得
remove:指定した位置の要素の削除
set:指定した位置の要素の置き換え
size:要素数の取得

実装クラス
ArrayList :要素の検索は高速だが、先頭側への追加や削除は低速(後方要素の再配置が必要なため)
LinkedList:要素が前後へのリンクでつながっているため追加・削除は早いが、検索は遅い。
      スタックやキューとしても使える。

Set extends Collection
重複要素を許可しないコレクション管理、位置指定できない

メソッド
add(Object):要素の追加
contains(Object):要素の有無
remove(Object):要素の削除


実装クラス
HashSet:要素の順序を保証しない
TreeSet, LinkedHashSet
その他諸々

Mapインターフェース
キーと値の対の要素を保持する。
メソッド
clear:要素の全削除
containsKey:キーの有無
containsValue:値の有無
get:引数のキーの値の取得
put:キーと値の挿入

実装クラス
HashMap:キーの並び順を保持しない。
TreeMap:キーを指定の並び順で保持
LinkedHashMap:キーを挿入順や、アクセス順で保持


参考資料
Javaの道:コレクション・フレームワーク(1.はじめてのコレクション・フレームワーク)