如何从ArrayList#toString()中删除括号?

我在Java中创建了一个看起来像这样的数组列表:

public static ArrayList error = new ArrayList(); for (int x= 1; x<10; x++) { errors.add(x); } 

当我打印错误时,我得到错误

[1,2,3,4,5,6,7,8,9]

现在我想从这个数组列表中删除括号([]) 。 我以为我可以使用方法errors.remove(“[”),但后来我发现它只是布尔值并显示true或false。 有人可以建议我怎么做到这一点?

预先感谢您的帮助。

您可能正在调用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()仅用于生成用于记录或调试目的的人类可读表示。 所以最好在迭代时自己构建String:

 List 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(); 

请注意,这不是一个数组,只是一个显示列表内容的String。 要从列表创建数组,可以使用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 ); 

简答: System.out.println(errors.toString().substring(1, errors.toString().length() - 1))

说明:当使用Object作为参数调用System.out.println(obj)时,打印的文本将是obj.toString()的结果。 ArrayList.toString()的实现方式使得它在每个包含项(它们的.toString()表示forms的逗号分隔串联中的括号[]之间表示其内容。

依赖另一个类的toString()实现并不是一个好习惯。 您应该使用自己的方式来格式化结果。

括号实际上不在列表中,它只是列表的表示。 如果任何对象进入String输出,则调用对象toString()方法。 在ArrayList的情况下,此方法提供由此括号包装的列表的内容。

如果你想打印没有括号的ArrayList,只需迭代它并打印它。

您看到的括号只是一种在JAVA中显示List的自动方式(例如,使用System.out.println(list);

如果您不希望它们在显示时显示,您可以创建自定义方法:

 public void showList(List listInt) { for(int el : listInt) { System.out.print(el + ", "); } } 

然后调整此代码以根据您的喜好显示!

列表中没有括号。 这就是Java默认打印列表的方式。

如果要打印列表的内容,可以这样

 for (Integer error : errors) { System.out.format("%d ", error); } 

如果您打印错误列表,它将在内部调用列表的toString()方法,此方法添加括号。 有几种可能性。 您可以通过toString()方法获取String,从String中删除括号。 或者您编写自己的方法来打印List。

 public static  void printList(List list) { StringBuilder output = new StringBuilder(); for(T element : list) output.append(element + ", "); System.out.println(output); } 

这是一个IntegerArrayList 。 此ArrayList不能包含像'['这样的字符。 但你可以像这样从中删除一个Integer

 error.remove(3); 
 String text = errors.toString().replace("[", "").replace("]", "");//remove brackets([) convert it to string 

括号不是数组列表的一部分,因为正如你所提到的那样,它是整数类型的

ArrayList

使用时打印错误

 System.out.println(errors); 

它只是格式化您的数据,只是迭代数组并分别打印每个值

System.out.println(error.toString().substring(1, error.toString().length()-1)); 这对我有用