今日は java.util.Listインターフェイスのページ。
まったく初めての単語が出てきた。
Genericsとイテレータ
Generics じぇねりっくす
総称型。
JavaやC++Templateにおいて、コレクションフレームワークで良く使われる、あるオブジェクトに入れ子(集約(Aggregation, Composition)など)になっている別のオブジェクトの型を限定することで、余計なバグを減らすもの。
これにより、そのオブジェクトに入れ子になっているオブジェクトを取り出すたびにそのオブジェクトの型が何型であるかを調べる必要がなくなる。
Javaの例
List<String> list = new ArrayList<String>(); list.add("リストに文字列追加"); //list.add(1); //数字を追加。String型ではないためエラーとなる。 for (String element : list) { //listの中に入っているものはすべてStringとわかっているので、明示的にダウンキャストする必要はない。 System.out.println(element); }
ここでListやArrayListのようなインタフェースやクラスのことを「パラメタライズドクラス(インタフェース)」「ジェネリッククラス(インタフェース)」という。
の部分のことのようです。
イテレータ
イテレータ (Iterator) とは、プログラミング言語において配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。
うん、これはヤヴァイネ。わからんね。
繰返し処理の抽象化.. その1. for(int i=0;i < data.size();++i){ String str; str = (String)data.get(i); taOutput.append(str+"\n"); } その2. Iterator it = data.iterator(); while (it.hasNext()) { Object val = it.next(); taOutput.append(val+"\n"); }
この2つが同じ結果で出てくる。
なーんとなくphpでいうところの arrayやforeachの単語が頭に浮かぶけどうまいイテレータの説明ができんなぁ。
追記::
って、次のページ読んだら載ってるぢゃん。
イテレーター
Listインターフェイスのオブジェクトは番号を指定することによる要素の効率が悪いものもあるので要素番号が必要ないときにはIteratorオブジェクトを使うようにします。
Generics
Genericsによる型の保証
Listオブジェクトって何でも入っちゃうのでバグがあったときに見つけにくいので。

