\r\n\r\n
エニュメレータとイテレータ
Javaには、ベクトル、ハッシュテーブル、Javaコレクションフレームワークを実装したクラス(HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap, LinkedHashSet)などコレクションとして機能するデータ構造が多数存在します。Javaでは、個々のオブジェクトに反復するための要素が無数にあります。Javaはこの作業を簡略化するために2つのインターフェースを提供しています。列挙子および反復子は、java.util ファイルのパッケージで、一連の項目を通じてシーケンスやオブジェクトを列挙する機能を提供します。jdk1.0 では列挙子が導入され、jdk1.2 では反復子が導入されましたが、実際には列挙子の機能を(コレクションのフレームワークで)複製しています。
エニュメレーションとは?
Enumerationは、JDK1.0で導入されたJavaのパブリックインターフェースで、一連の要素を通じて列挙する機能を提供します。java.utilファイルにラップされた状態で以下に記載されています。列挙インターフェースをオブジェクトに実装すると、そのオブジェクトは要素列を生成することができる。hasMoreElements() メソッドは、この列挙にさらに要素が含まれているかどうかをテストし、 nextElement() は、シーケンスの次の要素(少なくとも1つの要素が残っている場合)を返します。つまり、nextElement()を連続的に呼び出すことで、プログラマはシーケンス内の個々の要素にアクセスすることができるのである。たとえば、Vector v1のすべての要素を列挙子を使って表示するには、次のようなコード・スニペットを使用します。
enumeration e=v1.elements().
While (e.ha**oreelements()){。
System.out.println (e.nextElement()).
}
また、SequenceOr列挙型ストリームを使用して、入力オブジェクトの入力ストリー ムを定義することも可能である。
イテレータとは何ですか?
イテレータは、コレクションフレームワークを実装したコレクティ***オブジェクト(ArrayList、LinkedListなど)の要素に対する反復処理を可能にするJava.utilファイルパッケージです。これは jdk1.2 で導入されたもので、Java コレクションフレームワークの列挙子に代わるものです。イテレータには、3つのメソッドがあります。hasNext() メソッドは、コレクション内に要素が残っているかどうかをテストし、next() メソッドはシーケンス内の次の要素を返す。 remove() メソッドは、ベースコレクションから現在の要素を削除するために使用することができる。たとえば、Vector v1 のすべての要素をイテレータを使って表示するには、次のようなコード・スニペットを使用することができます。
Iterator i = v1.elements().
While(i.hasNext()){。
System.out.println (e.next()).
}
列挙型と反復型の違いは何ですか?