我需要将一串字节流转换成一行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();
}
}
}
将字节数组转换为字符串会在每个输入字节上进行,这在我看来非常低效。有没有其他方法可以保留上一个周期中的字节到文本转换结果以避免重复转换?
ByteArrayOutputStream
。 - yegor256