バイト ストリームを UTF-8 文字の行に変換する必要があります。その行で私にとって重要な唯一の文字は、最後の文字です. そして、この変換はサイクルで発生する必要があるため、パフォーマンスは非常に重要です。単純で非効率的なアプローチは次のとおりです。
public class Foo {
private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
void next(byte input) {
this.buffer.write(input);
String text = this.buffer.toString("UTF-8"); // this is time consuming
if (text.charAt(text.length() - 1) == THE_CHAR_WE_ARE_WAITING_FOR) {
System.out.println("hurray!");
this.buffer.reset();
}
}
}
バイト配列から文字列への変換は、入力バイトごとに発生しますが、これは私の理解では非常に効果的ではありません。前のサイクルからのバイトからテキストへの変換の結果を保存するために、他の方法でそれを行うことは可能ですか?