gpt4 book ai didi

java - 我应该使用 Vector 作为字符串缓冲区吗?如何有效地将其转换为字符串?

转载 作者:行者123 更新时间:2023-12-01 18:32:56 24 4
gpt4 key购买 nike

我需要在循环中缓冲来自套接字的字符:

string buffer;
while(!eof) {
//read character into buffer

}

现在,特别是在 java 中,我有两个选择。要么使用 String 和 += 运算符,尽管 java 中没有运算符重载,但它以某种方式工作。然而,Java 中的字符串是不可变的,这意味着每次修改字符串时,实际上都是在创建一个新字符串。我认为这在我的情况下可能非常无效,因为可能会顺序添加许多字符(我正在从套接字读取等待分隔符)。
其他方法是使用某种灵活的数组,例如 VectorList。这个可以使用 .add 方法接受更多字符。但当然,它是否真的更快是一个问题 - 最后,我们无论如何都需要将数据转换为字符串。

那么:对于缓冲来说,ListString 更有效吗?如何在不使用 + 运算符的情况下将 List 转换为字符串?

这样的转换是没有用的:

for(int i=0,l=list.size(); i<l; i++) {
string+=list[i];
}

我已经可以在接收器循环中做同样的事情了......

最佳答案

要缓冲String,请使用 StringBuilder 。它就是为此而设计的。

StringBuilder buffer = new StringBuilder();
while(!eof) {
//read character into buffer
buffer.append(someCharacter);
}
String finalString = buffer.toString();

还有一个StringBuffer类,区别在于后者(StringBuffer)是同步的,而StringBuilder不是。

但在多线程的情况下,我建议您使用 StringBuilder 并对其进行同步(请阅读 @PeterLawrey 的 this article)。

关于java - 我应该使用 Vector<char> 作为字符串缓冲区吗?如何有效地将其转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com