我想将Character的CharacterList转换为String。我读了类似Best way to convert an ArrayList to a string之类的线程,但我想要更简单的方法。
我试过这个
List<Character> chars = new ArrayList<Character>();
...
Character[] charArray = (Character[]) chars.toArray();
String output = new String(charArray); // error
但它没有用,因为new String()
构造函数只接受char[]
作为参数。我无法轻易将chars
或charArray
转换为char[]
类型。
有没有简单的方法?或者,我是否必须迭代才能制作字符串?
答案 0 :(得分:4)
这很简单:
StringBuilder result = new StringBuilder(chars.size());
for (Character c : chars) {
result.append(c);
}
String output = result.toString();
答案 1 :(得分:3)
是的,不幸的是,你必须进行迭代。
char[] cs = new char[chars.size()];
for(int i = 0; i < cs.length; i++) {
cs[i] = chars.get(i);
}
String output = new String(cs);
答案 2 :(得分:2)
一种简单的方法是将每个字符附加到字符串:
String myString = "";
for (Character c : charList) {
myString += c;
}
这会遍历列表以附加每个字符。
结果:
charList的输出是:[a, b, c]
。
myString的输出是:abc
。
答案 3 :(得分:2)
我只是运行了一些基准,因为我对最快的方式感兴趣。 我运行了4种不同的方法,每种方法分别为1.000.000(1百万)次。
旁注:
char[] cs = new char[chars.size()];
for(int x = 0; x < cs.length; x++){
cs[x] = chars.get(x);
}
String output = new String(cs);
时间:7716056685纳秒或~7.7秒/索引:1
StringBuilder result = new StringBuilder(chars.size());
for(Character c : chars){
result.append(c);
}
String output = result.toString();
时间:77324811970纳秒或~77.3秒/指数:~10
StringBuilder result = new StringBuilder();
for(Character c : chars){
result.append(c);
}
String output = result.toString();
时间:87704351396纳秒或~87.7秒/指数:~11,34
String output = "";
for(int x = 0; x < cs.length; x++){
output += chars.get(x);
}
时间:4387283410400纳秒或~4387.3秒/指数:~568,59
我实际上不得不缩小这个。这个方法只运行10000次,已经花了大约43秒,我只是将结果乘以100得到近似的1.000.000次运行
使用&#34;转换为数组,然后转换为字符串&#34;方法......它快......另一方面我不会认为+ =操作太慢......
final String jsonExample = new String("/* Random Json String here */");
final char[] charsARRAY = jsonExample.toCharArray();
final ArrayList<Character> chars = new ArrayList<Character>();
for(int i = 0; i < charsARRAY.length; i++){
chars.add(charsARRAY[i]);
}
final long time1, time2;
final int amount = 1000000;
time1 = System.nanoTime();
for(int i = 0; i < amount; i++){
// Test method here
}
time2 = System.nanoTime();
答案 4 :(得分:0)
尝试番石榴:
Joiner.on("").join(chars);
或commons-lang:
StringUtils.join(chars, null);