Java 我应该使用Vector<;char>;字符串缓冲区?如何有效地将其转换为字符串?
我需要在循环中缓冲套接字中的字符:Java 我应该使用Vector<;char>;字符串缓冲区?如何有效地将其转换为字符串?,java,buffer,Java,Buffer,我需要在循环中缓冲套接字中的字符: string buffer; while(!eof) { //read character into buffer } 现在,特别是在java中,我有两个选择。或者使用一个字符串和+=操作符,尽管java中没有操作符重载,但它还是可以工作的。然而,字符串在Java中是不可变的,这意味着每次修改字符串时,实际上都在创建一个新字符串。我认为这在我的情况下可能会非常无效,因为许多字符可能会按顺序添加(我正在从套接字读取,等待分隔符)。 另一种方法是使用某种灵
string buffer;
while(!eof) {
//read character into buffer
}
现在,特别是在java中,我有两个选择。或者使用一个字符串和+=
操作符,尽管java中没有操作符重载,但它还是可以工作的。然而,字符串在Java中是不可变的,这意味着每次修改字符串时,实际上都在创建一个新字符串。我认为这在我的情况下可能会非常无效,因为许多字符可能会按顺序添加(我正在从套接字读取,等待分隔符)。另一种方法是使用某种灵活的数组,例如
Vector
的List
。这个可以使用.add
方法接受更多字符。但当然,这是一个问题,如果它真的更快-最终,我们将需要将数据转换为字符串无论如何
那么:List
在缓冲方面是否比String
更有效?如何将列表
转换为没有+
运算符的字符串
这种转换是无用的:
for(int i=0,l=list.size(); i<l; i++) {
string+=list[i];
}
对于(int i=0,l=list.size();i对于缓冲字符串
,请使用。它是为此而设计的
StringBuilder buffer = new StringBuilder();
while(!eof) {
//read character into buffer
buffer.append(someCharacter);
}
String finalString = buffer.toString();
还有一个StringBuffer
类,区别在于后者(StringBuffer
)是同步的,而StringBuilder
不是
但在多线程的情况下,我建议您使用StringBuilder
并对其进行同步(从@PeterLawrey读取)。要缓冲字符串,请使用。它是专门为此设计的
StringBuilder buffer = new StringBuilder();
while(!eof) {
//read character into buffer
buffer.append(someCharacter);
}
String finalString = buffer.toString();
还有一个StringBuffer
类,区别在于后者(StringBuffer
)是同步的,而StringBuilder
不是
但是在多线程的情况下,我建议您使用StringBuilder
并同步它(从@PeterLawrey读取).除非是为了与旧库的互操作性,否则在新代码中永远不应该使用Vector
。我想知道这是为什么?Vector
基本上已经被弃用了很长一段时间,详细信息在Javadoc中进行了解释。它和Hashtable
是在中被取代的重量级同步实现Java 1.2.Si同步列表
(使用同步
块)与Vector
是一样的吗?而且,你不能有原语的集合。所以Vector
是无效的,但是Vector
,或者更好的是,List
,是有效的。顺便说一句,我现在看到Vector
对象的唯一时间是在我使用10年前的代码时。你永远不要使用Vector
在新代码中,除非它是为了与传统库的互操作性。我想知道,这是为什么?Vector
在很长一段时间内基本上被弃用,详细内容在Javadoc中解释。它和Hashtable
是在Java 1.2中被取代的重量级同步实现。Si synchronizedList
(使用synchronized
块)与Vector
是一样的吗?而且,你不能有原语的集合。所以Vector
是无效的,但是Vector
,或者更好的是,List
,是有效的。顺便说一句,我现在看到Vector
对象的唯一时间是当我使用10年前的代码时。我可以循环使用字符串生成器吗ing for loop?@TomášZato是的,您可以。阅读该类的文档,您将找到所有有助于完成此任务的方法。我可以使用for loop循环字符串生成器吗?@TomášZato是的,您可以。阅读该类文档,您将找到所有有助于完成此任务的方法。