您可能正在调用System.out.println 来打印列表。 JavaDoc 说:
This method calls at first String.valueOf(x) to get the printed object's string value
括号是由ArrayList 的toString 实现添加的。要删除它们,您必须首先获取字符串:
String errorDisplay = errors.toString();
然后去掉括号,如下所示:
errorDisplay = errorDisplay.substring(1, errorDisplay.length() - 1);
依赖toString() 实现并不是一个好习惯。 toString() 仅用于生成人类可读的表示以用于日志记录或调试目的。所以最好在迭代时自己构建字符串:
List<Integer> errors = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (int x = 1; x<10; x++) {
errors.add(x);
sb.append(x).append(",");
}
sb.setLength(sb.length() - 1);
String errorDisplay = sb.toString();
请注意,这不是一个数组,只是一个显示列表内容的字符串。要从列表创建数组,您可以使用 list.toArray():
// create a new array with the same size as the list
Integer[] errorsArray = new Integer[errors.size()];
// fill the array
errors.toArray(errorsArray );
编辑:从面向对象的角度来看,错误和 errorsDisplay 在概念上属于一个类,例如:
public class Errors {
private final List<Integer> codes = new ArrayList<>();
public void add(int error) {
codes.add(error);
}
public Stream<Integer> get() {
return codes.stream();
}
@Override
public String toString() {
return codes.stream()
.map(Object::toString)
.collect(Collectors.joining(", "));
}
}