- PR -

iterator ,BufferedReaderについて

1
投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-26 09:37
BufferedReader,Iteratorなどの使用方法について教えていただきたいのですが、
以下の1,2のように全データを検索した後にポインタカーソルのようなものを先頭に戻す方法ってあるんでしょうか?(ResultSet.first()のようなメソッド)

どなたかテクニックを伝授してください。
よろしくお願いいたします。

1===============================================================
iterator = HashMap().keySet().iterator();
while(iterator .hasNext()){
}
2===============================================================
while ((str_line = BufferedReader.readLine()) != null){}

===============================================================

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-26 09:51
オブジェクト指向の世界では、メソッドがなければ基本的にそのような操作はできないものと考えてイイです。
どのクラスに目的の役割を持つメソッドがあるか見極めるのはまた難しいところですが。

たとえば Iterator は hasNext(), next(), remove() しかないのでそれ以外の操作はできません。
List を直接操作するか、もう一度 Collection#iterator() でカーソルを取得しましょう。

Reader は役割としてはストリームを順に読み取っていくことになります。
ストリームとはイメージ的には双方向のものではなく一方的に流れてくるデータのことです。読み取ったあとから先頭のデータを要求するようなことはできませんので、そのようなメソッドがそもそもないのです。

[ メッセージ編集済み 編集者: インギ 編集日時 2005-03-26 09:51 ]
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-03-26 13:59
引用:
読み取ったあとから先頭のデータを要求するようなことはできませんので、そのようなメソッドがそもそもないのです。


Reader#reset() は?

引用:
ストリームとはイメージ的には双方向のものではなく一方的に流れてくるデータのことです。


まあ、基本はそうなんだけど。双方向ではないけど読み取ったデータをプッシュバックできるものもある。PushbackReader とか、C で ungetc なんかを使っていた人には重宝するはず。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-03-26 21:06
ListIteratorでもどれます。
List#listIterator();
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2005-03-27 20:47
ありがとうございます。

皆さんのお返事で書かれていたメソッドを調べてみつつなにか良い方法
を探してみます。
1

スキルアップ/キャリアアップ(JOB@IT)