我在Java中创建了一个类似于这样的数组列表:
public static ArrayList<Integer> error = new ArrayList<>();
for (int x= 1; x<10; x++)
{
errors.add(x);
}
当我打印错误时,我将错误视为
[1,2,3,4,5,6,7,8,9]
现在我要从此数组列表中删除方括号([])。我以为我可以使用方法errors.remove(&#34; [&#34;),但后来我发现它只是布尔值并显示真或假。有人可以建议我怎么做到这一点?
提前感谢您的帮助。
答案 0 :(得分:8)
您可能正在调用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<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();
请注意,这不是一个数组,只是一个显示列表内容的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 );
答案 1 :(得分:3)
简短回答:System.out.println(errors.toString().substring(1, errors.toString().length() - 1))
说明:当您使用System.out.println(obj)
作为参数致电Object
时,打印的文本将是obj.toString()
的结果。 ArrayList.toString()
的实现方式使得它在括号[]
之间以逗号分隔的每个包含项目(也是.toString()
表示形式)表示其内容。
依靠另一个班级的toString()
实施并不是一种好习惯。您应该使用自己的方式格式化结果。
答案 2 :(得分:2)
如果您打印错误列表,它将在内部调用列表的toString()
方法,此方法添加括号。有几种可能性。您可以通过toString()
方法获取String,从String中删除括号。或者你编写自己的方法来打印List。
public static <T> void printList(List<T> list)
{
StringBuilder output = new StringBuilder();
for(T element : list)
output.append(element + ", ");
System.out.println(output);
}
答案 3 :(得分:2)
括号实际上不在列表中,它只是列表的表示。如果任何对象进入String输出,则调用对象toString()方法。对于ArrayList,此方法提供由此括号包装的列表的内容。
如果你想打印没有括号的ArrayList,只需迭代它并打印它。
答案 4 :(得分:2)
您看到的括号只是一种在JAVA中显示List的自动方式(例如,使用System.out.println(list);
时。
如果您不希望它们在显示时显示,您可以创建自定义方法:
public void showList(List<Integer> listInt)
{
for(int el : listInt)
{
System.out.print(el + ", ");
}
}
然后调整此代码以根据您的喜好显示此内容!
答案 5 :(得分:2)
列表中没有括号。 这就是Java默认打印列表的方式。
如果您要打印列表内容,可以使用以下内容
for (Integer error : errors) {
System.out.format("%d ", error);
}
答案 6 :(得分:1)
这是ArrayList
的{{1}}。此Integer
不能包含ArrayList
之类的字符。但您可以像这样删除'['
-
Integer
答案 7 :(得分:1)
String text = errors.toString().replace("[", "").replace("]", "");//remove brackets([) convert it to string
答案 8 :(得分:1)
括号不是数组列表的一部分,因为您已经提到它的整数类型
ArrayList<Integer>
使用
打印错误时System.out.println(errors);
它只是格式化您的数据,只是迭代数组并分别打印每个值
答案 9 :(得分:1)
System.out.println(error.toString().substring(1, error.toString().length()-1));
这对我有用
答案 10 :(得分:0)
您可以这样写。
String output = errors.toString().replaceAll("(^\\[|\\]$)", "");