ここから本文です

javaでiterator(イテレータ?)ってあると思うんですけど、いまいち用途がわかりま...

chochoi_choichoiさん

2010/8/1309:00:09

javaでiterator(イテレータ?)ってあると思うんですけど、いまいち用途がわかりません…
調べてもよくわからなくて。

有識者の方、わかりやすく説明していただけませんか?

閲覧数:
42,176
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

編集あり2010/8/1321:49:46

Iteratorというのは、そもそも、
「コレクション」を「繰り返し使うため」にあるものです。
※コレクション、というのは、リストやSetのように、複数の要素を扱うオブジェクトです。

Iteratorは、コレクションの要素を、一つずつ順番に処理するために用いられますが、
普通、配列やリストを順番にループさせるときは、for文でループさせたりすると思います。Iteratorはつかいませんね。

これは、配列やリストが、indexでアクセスできるタイプのコレクションだからです。
[順序付けられたコレクションだから]と言っても良いでしょう。
-----------------
例)
int[] a = new int[3];
a[2]=10;//index(2)でアクセスしている
-----
ArrayList<Integer> list = new ArrayList<Integer>();
list.get(3);//index(3)でアクセスしている
-----------------

では、順序づけられていないコレクションとはどんなものがあるでしょうか。
順序づけられていないコレクションに、Setがあります。
Setは要素の重複を許さないコレクションですが、順序付けはされていません。
Setに入れた要素を順番に取り出したい時は、
Set#iteratorメソッドを使って、Iteratorを取りだし、順番に要素を取得します。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Set.html

こんな風に使います。
----------------------------
Set hs1 = new HashSet(); //(1)オブジェクト生成

for (int i = 0; i < 10; i++) {
hs1.add(new Integer(i));
}
Iterator i = hs1.iterator();
while ( i.hasNext()) { //Iteratorを取得し、ループで回す
System.out.println(i.next());
}

-----------------
よく使うのは、Mapに格納した値を順に取得する際等です。
#MapのkeyはSetですからね。
http://www.javaroad.jp/java_collection5.htm
こちらの、
MapのIteratorインタフェース
をご覧になると宜しいかもしれませんね。

お勉強頑張ってくださいね。

質問した人からのコメント

2010/8/19 09:03:24

成功 お二方、詳しい説明ありがとうございます。勉強になりました。
ベストアンサーはmaria_salon1984さんにさせていただきます。ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

jtaka451さん

2010/8/1309:36:49

javaだけじゃなくて、いろいろな言語で使われている機能だったりします<イテレータ
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E...

配列だったりするとforループで回せるけど、リストとかのコレクションだとなかなか難しかったりするので、コレクションに結び付けるイテレータを作っておくと、そのイテレータに「最初のものを持ってきて!」「次持ってきて!」って呼びかけるとそれに従ったコレクションの中のものを持ってきてくれるようになっているって感じかな。あるいは、foreachでそのての指示をまとめてやっちゃうってこともできることもあると。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。