如何从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); }
这是一个Integer
的ArrayList
。 此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));
这对我有用