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

时间:2015-07-30 07:57:27

标签: java arraylist

我在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;),但后来我发现它只是布尔值并显示真或假。有人可以建议我怎么做到这一点?

提前感谢您的帮助。

11 个答案:

答案 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("(^\\[|\\]$)", "");