Collectionインタフェースを実装するクラス
これまで,同じクラスのオブジェクトインスタンスをまとめるには「配列」を使ってきた.配列は固定長でありメモリ上に1列に並んでいるので高速であるが,後ろに要素を追加させて長さを増減させたり,間に挿入する(それより後の要素をずらしてく),インデックス以外の取り出し,などができない.
Javaの標準ライブラリではCollection(や,それを継承した)インタフェースを実装し,用途に応じて機能を追加した配列以外のクラスが多く用意されている.ここでは代表的なものをあげる.
ArrayList
サイズ変更可能な配列である.詳細は仕様ArrayList (Java Platform SE 7)を参考すること.
import java.util.ArrayList;
// Stringクラスのオブジェクトを収納する(Genericsの型変数で指定する)空のArrayListを作る
ArrayList<String> myArrayList = new ArrayList<String>();
なお,同じ機能を持ったVectorというクラスも存在するが,これは一連のCollectionが設計される以前の古いものなので,積極的に使用するのを避けるべし,という考え方が一般的である.(ただしマルチスレッド時を除く)
ArrayDeque
スタック(FILO)やキュー(FIFO)を実現するための,現在のJavaにおける基本実装である.
仕様ArrayDeque (Java Platform SE 7)を参照すること.
StackクラスやDeque, Queueクラスも存在するが,これは一連のCollectionが設計(後略
HashMap
HashMapは一般的には「ハッシュテーブル」と呼ばれるデータ格納型の現在のJavaにおける基本実装である.
ArrayList等配列系のクラスは,最後尾の要素以外はインデックス数字を使って取り出すのが一般的であるが,HashMapは,取り出しキーとなる文字列とオブジェクトインスタンスを同時に格納し,キー文字列を渡すことで取り出すことができる
仕様HashMap (Java Platform SE 7 )を参照すること.
Hashtableクラスも存在するが,これは一連のCollectionが設計(後略
シャローとディープコピー
これらのCollection型を取り扱う時に必ず考慮に入れなければいけないのが,シャロー(浅い)コピーとディープ(深い)コピーの違いである.