PushbackReader
PushbackReaderを使うと、Readerで読み込んだ文字を再度Readerに戻す(読まなかったことにする)ことができます。以下は簡単な利用例。連続する文字を1つにまとめつつ、出力します。
// PushbackReader を作成 PushbackReader reader = new PushbackReader( new StringReader( "abccdeeefgg" )); // Readerから1文字ずつ取り出して出力する。 // 同じ文字が2つ連続する場合は、1つにまとめる。 for ( int i=reader.read(); i>0; i=reader.read() ) { // 次の文字を読む。 int next = reader.read(); // 今と次が同じなら読み飛ばす。 // そうでなければ読まなかったことにする。 if ( i != next ) { reader.unread( next ); // 読んだのを元に戻す。 } System.out.println((char)i); // 文字を出力 }
実行結果です。
a b c d e e f g
1.1の頃からあるクラスらしいので、いまさら感満載ですが。それにしても、作る前にググって良かった。