将数组字符列表转换为字符串?

2022-09-01 03:06:10

如何在Java中将a转换为a?ArrayList<Character>String

该方法将其作为字符串返回 - 我想摆脱括号(etcetera)并将其存储为.List.toString[a,b,c]abc


答案 1

您可以循环访问列表并创建字符串。

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

将 的容量设置为列表大小是一项重要的优化。如果不这样做,某些调用可能会触发构建器的内部调整大小。StringBuilderappend

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


答案 2

这里有一个使用Java8流的可能的单行解决方案。

a) 字符串的字符对象列表 :

String str = chars.stream()
                  .map(e->e.toString())
                  .reduce((acc, e) -> acc  + e)
                  .get();

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

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

更新(以下评论如下):

a) 字符串的字符对象列表 :

String str = chars.stream()
                  .map(e->e.toString())
                  .collect(Collectors.joining());

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

String str = Stream.of(chars)
                   .map(e->new String(e))
                   .collect(Collectors.joining());

请注意,上述解决方案中的步骤将为列表中的每个字符创建一个临时字符串。字符串立即成为垃圾。因此,如果转换的性能是一个相关的问题,则应考虑改用StringBuilder方法map(e->e.toString())