Java collection 学習資料
- Java 新人用 collection 学習資料
【連載 】コレクションフレームワーク
- スタックアスタリスク
第1回:コレクションフレームワークの概要
配列は関連するデータを扱うものとして大変便利ですが、配列の大きさを変更できないという制限があり、機能は単純なものに限られています。
Javaではオブジェクトのグループを操作できるよう、Java開発当初から配列に加えてVectorやHashTableなどのクラスが提供されてきました。
JDK1.2以降はこれらのクラスよりもはるかに汎用化の進んだコレクションフレームワークというものがサポートされるようになりました。
- 分類 List / Map / Set
よく使うもの
ArrayList
- 作成 ArrayList arraylist = new ArrayList();
- 追加
arraylist.add(追加したいオブジェクト);
- 取得
Object obj = ararylist.get(i);
HashMap
- 作成 HashMap hashmap = new HashMap();
- put(key,value);
Object obj = hashmap.get(key);
- キー一覧の取得
Set keys = hashmap.keySet();
Collection
- コレクション間の変換が簡単
- 反復子 iterator が共通で使える
配列とListの違い
配列 | ArrayList | |
---|---|---|
要素の長さ | 変更不可 | 変更可能 |
データ型 | 定義した型だけ | java.lang.Object |
int や char などの基本データ型 | 配列作成が可能 | Integer や String に変換して配列作成 |
第2回:Listの活用法
array=new ArrayList(); array.add(obj1); array.add(obj2); array.add(obj3); int size=array.size() Order od = array.get(1);
第3回:Mapの活用法
HashMap map = new HashMap(); map.put("09W0011",obj11); map.put("09W0012",obj12); map.put("09W0013",obj13); int size=map.size();
キー値を重複して追加した場合、キー値に関連付けられた値が上書きされることがわかります。
HashMapを使用すれば「キーを付けて値を関連付ける」ことはできますが「順序の管理」はできません
TreeMapクラスはSortedMapインターフェースを実装したクラスで、マップが確実にキーの昇順でソートされます。
第4回:Setの活用法
コレクション内のオブジェクトの順番を管理することができない。
ListやMapにあったget()メソッドはSetにはない。
HashSetクラスはSetインターフェースを実装したクラスの中で最も高速に動作します。
HashMapクラスのメソッドには、Setオブジェクトを返すメソッドが用意されています。
Mapに格納されているオブジェクトをSetに変換して、Setからiterator()メソッドを呼び出して全ての値を取得する目的で良く使われます。
第5回:コレクションフレームワークで使用する様々な機能(前編)
第6回:コレクションフレームワークで使用する様々な機能(後編)
第7回:JDK5でのコレクションフレームワークの変更点
コレクションフレームワークから要素を取り出すときにキャストが不要であったり、基本データ型のラッピングオブジェクトを使った変換が自動化されたりと、コードをシンプルに書くことができるようになりました。
- 1.4
ArrayList orders = new ArrayList(); Order order1 = (Order) orders.get(1);
- 1.5
ArrayList <Order> orders = new ArrayList <Order>(); Order order2 = aaa.get(1);
拡張したfor文を使用すると、コードが更にシンプルになります。このfor文ではIteratorを使用することなく、コレクションに入っている全ての要素を取得することができます。