将字符[]转换为字符串
将Character[]
转换为char[]
或String
的最佳方法是什么?将字符[]转换为字符串
一种方法是手动循环当前在for(char c : CharacterArray)
循环中的字符数组,并追加到StringBuilder
。 StringBuilder
似乎也直接接受了Character[]
,但是,这一切呢?
我会建议使用一个简单的循环转换Character[]
为char[]
,然后通过它进入新的String();
Character[] characters = new Character[128];
char[] chars = new char[characters.length];
int length = characters.length;
for(int i=0; i<length; i++) {
chars[i] = characters[i].charValue();
}
String string = new String(chars);
另一种方法是创建通过StringBuilder
环和单独添加每个字符。
Character[] characters = new Character[128];
StringBuilder sb = new StringBuilder(characters.length);
for(Character c : characters) {
sb.append(c);
}
String string = sb.toString();
我有一种感觉,第一种方法可能更有效,但我不确定。
如果你初始化'StringBuilder'具有足够的容量,第二种方式应该是有效的。 –
的确,第一个要快得多。 'StringBuilder'每次都会重新创建一个比前一个字符大一个字符的新缓冲区。我检查了'StringBuilder'的Java源代码。除非你用给定的数组大小构造StringBuilder。然后,不需要重新创建缓冲区。那么表现将是一样的。 –
实际上,如果你做'新的StringBuilder(characters.length);'它将是最有效的,如果附加和拆箱被JIT内联,因为构建器中的基础char []将用于结果字符串 –
@jleedev:认为我是一个类型安全的坚果:-) – Bhaskar
@Bhaskar,几乎没有一个很好的理由使用'Character []'最好的办法是重构你的代码,所以你不要首先没有人。改用'char []'或者'StringBuilder'。 –
@Peter Lawrey:我有一个泛型类型,其中一个泛型类型参数必须是'字符' - 我不知道任何其他方式来处理这个比使用一个字符,然后使我在提到的情况下。 – Bhaskar