将字符的ArrayList转换为字符串?

pho*_*nix 30 java

如何在Java中转换ArrayList<Character>为a String?该toString方法将其作为[a,b,c]字符串返回- 我想摆脱括号并将其存储为abc.

Vin*_*lds 30

您可以遍历列表并创建字符串.

String getStringRepresentation(ArrayList<Character> list)
{    
    StringBuilder builder = new StringBuilder(list.size());
    for(Character ch: list)
    {
        builder.append(ch);
    }
    return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)

另外,toString()返回ArrayList内容的人类可读格式.不值得花时间从中过滤掉不必要的字符.它的实现明天可能会改变,你必须重写你的过滤代码.

  • 你可能想通过新的`StringBuilder(list.size())确保容量;`所以不会发生不必要的reallocs但这是一个优化 (2认同)

wag*_*ans 18

这是一个使用Java8流的可能的单行解决方案.

a)String字符对象列表:

String str = chars.stream().map(e->e.toString()).reduce((acc, e) -> acc  + e).get();
Run Code Online (Sandbox Code Playgroud)

b)字符数组(char []字符)

String str = Stream.of(chars).map(e->new String(e)).reduce((acc, e) -> acc  + e).get();
Run Code Online (Sandbox Code Playgroud)

更新(以下评论):

a)String字符对象列表:

String str = chars.stream().map(e->e.toString()).collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)

b)字符数组(char []字符)

String str = Stream.of(chars).map(e->new String(e)).collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)

  • 可以使用收集器而不是reduce:`.... collect(Collectors.joining())` (2认同)