2011-12-08 50 views
5

是否存在将仅包含字符的ArrayList转换为字符串的简单方法?所以说我们有将ArrayList <Characters>转换为字符串

ArrayList<Character> arrayListChar = new ArrayList<Character>(); 
arrayListChar.add(a); 
arrayListChar.add(b); 
arrayListChar.add(c); 

所以数组列表包含a,b和c。理想情况下,我想要做的是把它变成一个字符串“abc”。

+1

可能的重复问题:http://stackoverflow.com/q/6324826/601409 – EkcenierK

+0

甚至更​​好的答案在这里提供:http://stackoverflow.com/questions/523871/best-way-to-concatenate-list字符串对象这是关于连接字符串列表,但关闭。 – jFrenetic

回答

0

您可以覆盖它的toString方法并在其中执行String格式。

3
Iterator<Character> it = arrayListChar.iterator(); 
StringBuilder sb = new StringBuilder(); 

while(it.hasNext()) { 
    sb.append(it.next()); 
} 

System.out.println(sb.toString()); 
3

您可以使用Apache Common Lang's StringUtils类。它有一个像你在PHP中发现的join()函数。

然后代码:

StringUtils.join(arrayListChar, "") 

会产生:

abc 
0

的ArrayList覆盖toString方法或更好的扩展ArrayList类,让你可以使用旧的ArrayList的toString()其他地方在代码

0
String s = ""; 
    for(Character i : arrayListChar) 
      s += i; 

编辑 - 正如已经指出的,你应该如果要连接的字符串的数量很少,只能使用这样的代码。

+0

字符串是不可变的,你将为每个连接创建一个新的字符串。内存使用非常糟糕。尝试使用StringBuilder来代替。 – Tudor

+0

是的,你说得很对。谢谢 – Wozza

1
int size = list.size(); 
    char[] chars = new char[size]; 
    for (int i = 0; i < size; i++) { 
     if (list.size() != size) { 
      throw new ConcurrentModificationException(); 
     } 
     chars[i] = list.get(i); 
    } 
    String s = new String(chars); 
0

使用正则表达式魔术:

String result = list.toString().replaceAll(", |\\[|\\]", ""); 

获取列表中的字符串表示,这是

[a, b, c] 

然后取出字符串"[", "]", and ", "