サイトロゴ
この章で行う学習内容
 

コレクションフレームワーク
コレクションフレームワークとは
要素(Object)の集まりを操作する為のインタフェース郡のことです。
主に以下の3つを使います。
・List
・Map
・Set
☆インタフェース☆

この3つのインタフェースを継承してとても便利なクラスが容易されていますので、1つずつ見て行きます。
ArrayList(List)
Object型であれば何個でも値を保持出来る可変長配列になります。
可変長配列は、値を入れる箱が足りなくなれば、自動的に箱を追加してくれます。
なので、好きな数だけ値を保持することが出来ます

可変長配列はプリミティブ型以外の
全てのオブジェクト型を格納することが出来ます。
 使い方
使い方は通常のクラスと同じです。

例文
							//まずインスタンスを生成します。
							ArrayList<Object> li = new ArrayList<Object>();
							//次に値をセットします。
							li.add(オブジェクト);
							//値を取り出します。
							Object oj = li.get( int );
						
ポイント!
値のセットも取り出しもObject型で行います。
その為、String型を格納したのであれば、
String型にクラスキャストして取り出す必要があります。
HashMap(Map)
Object型であれば何個でも値を保持出来る可変長配列で、連想配列になります。
連想配列は、プロパティファイルに似ていて、キーと値で管理します。
その為、配列のような値の順番はありません。

例文
							//まずインスタンスを生成します。
							HashMap<Object> mp = new HashMap<Object>();
							//次に値をセットします。
							mp.put(キー, 値);
							//値を取り出します。
							Object oj = mp.get(キー);
						
※ キーはオブジェクトです。 ポイント!
キーが同じものをセットしようとすると、
以前の値が上書かれます。
HashSet(Set)
ArrayListに似ていますが、1箇所だけ違う箇所があります。
違うのは、要素番号がないというところで、それ以外は同じです。
例文
							//まずインスタンスを生成します。
							HashSet<object> st = new HashSet<object>();
							//次に値をセットします。
							st.add(オブジェクト);
							/*値の取り出し
hashsetには要素番号がありません。 その為、「ここの値を取得する」 というような処理を行うことが出来ません。 取得するときは「全ての値」になります。 */
ポイント!
値自体がキーの役目をしますので、
値が重複することはありません。
ジェネリックス (Generics)
ジェネリックス (Generics) というのはオブジェクト指向言語でクラスやメソッド を定義する際に、それらが処理対象とするデータ型を特定せず、パラメータとして定義 できる機能です
List<t>クラスの"t"が、このリストに格納できるオブジェクトの型を表すパラメータで、 実際にリストの変数やインスタンスを生成するときに指定します。例えばStringオブジェクト のリストを使いたい場合には、パラメータtをStringとして
List<String> List= new List<String>();
といったコードでStringオブジェクトのリストを作れます。

※String以外の任意のクラスでも同じリスト・クラスのコードを再利用可能です。
しかも実行時には処理対象の型が特定されるので、型の安全性も確保されます。
Iterator
コレクションフレームワークの値を取り出す役割を持っているものです。
内部にコレクションを保持し、それを取り出す役割をします。
 iterator()メソッド
コレクションフレームワークからiteratorインスタンスを取得する為のメソッドです。
 hasnext()メソッド
次の要素があるかチェックして、あればtrueを、無ければfalseを返します。
 next()メソッド
次の要素を取り出して、参照場所を1つ進みます。
HashSetからIteratorを取得
							HashSet set = new HashSet();
							set.add( "あ" );
							set.add( "い" );

							// Iteratorの取得
							Iterator itr = set.iterator();

							// 要素があるだけループ
							while( itr.hasNext() ) {
								// 要素はStringなのでキャスト
								String str = (String)itr.next();
								System.out.println( str );
							}
						
HashMapからIteratorを取得
HashMapの場合、キーが分からないと価を取得することが出来ません。
HashMapのインスタンスがあって、キーは分からないが、値を全て取得したい場合に、
Iteratorを取得して取り出します。
							HashMap map = new HashMap();
							map.put( "りんご", "Apple" );
							map.put( "みかん", "Orange" );

							//================================
							// マップの全要素取得処理
							//================================

							// マップのキーの一覧をSetで取得
							Set keys = map.keySet();

							// Iteratorの取得
							Iterator itr = keys.iterator();

							while( itr.hasNext() ) {
								Object key = itr.next();
								Object val = map.get( key );
								// 処理
							}