我尝试了以下方法:
List<Character> randomExpression = new ArrayList<Character>();
String infixString = new String(randomExpression.toArray());
但是这不起作用,因为没有带Object[]
参数的String构造函数
您可能已经注意到,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));
String
无论如何都需要原始char
数组,并且您不能直接将Character[]转换为char[]。所以你最好的选择是遍历list并构建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);