将List <character>转换为char [],然后转换为String </character>

时间:2011-10-09 07:25:22

标签: java

我尝试了以下内容:

List<Character> randomExpression = new ArrayList<Character>();
String infixString = new String(randomExpression.toArray());

但是这不起作用,因为没有带有Object[]参数的String结构符。

2 个答案:

答案 0 :(得分:12)

正如您可能已经注意到的那样,char[]Character[]不同,并且没有直接的方法可以在标准API中将其转换为另一种。

在这种特殊情况下,我可能会选择以下内容:

String result = chars.stream()
                     .map(String::valueOf)
                     .collect(Collectors.joining());

或者,在Java 9之前:

StringBuilder sb = new StringBuilder(chars.size());
for (char c : chars)
    sb.append(c);
String result = sb.toString();

另一种方法是使用Apache Commons方法ArrayUtils.toPrimitive

List<Character> chars = new ArrayList<Character>();
// ...
Character[] charArr = chars.toArray(new Character[chars.size()]);
String str = new String(ArrayUtils.toPrimitive(charArr));

答案 1 :(得分:2)

String无论如何都需要原始char数组,你不能直接将Character []转换为char []。因此,最好的办法是遍历列表并构建char[]数组以传递给new String(char[])

在代码中它会是这样的:

    char[] tmp = new char[randomExpression.size()];
    for (int i = 0; i < tmp.length; i++) {
        tmp[i]=randomExpression.get(i);            
    }
    String infixString = new String(tmp);