如何在Java中重写ArrayList的toString方法?

2022-09-04 05:42:15

我想在Java中为ArrayList拥有自己的toString()方法的实现。但是,即使我像这样将我的 toString() 添加到包含 ArrayList 的类中,我也无法让它工作。

@Override
public String toString() {
    String result = "+";
    for (int i = 0; i < list.size(); i++) {
        result += " " + list.get(i);
    }
    return result;
}

当我像这样调用我的ArrayList时,我仍然得到默认的表示形式。我错过了什么吗?list.toString()


答案 1
ArrayList<String> list = new ArrayList<String>()
{
    private static final long serialVersionUID = 1L;

    @Override public String toString()
    {
        return super.toString();
    }
};

答案 2

不能重写 1 的方法。相反,您可以使用一个实用程序类,它将 a 转换为您想要/需要的方式。另一种选择是使用 。toStringArrayListArrayListStringArrays.deepToString(yourList.toArray())

使用Java 8,这可以很容易地完成:

//List<String> list
System.out.println(String.join(",", list));

或者,如果您有:List<Whatever>

System.out.println(
    list.stream()
        .map(Whatever::getFieldX())
        .collect(Collectors.joining(", "))
);

我仍然反对扩展或类似,这在技术上是可行的,但我不认为这是一个好的选择。ArrayList


1 你可以扩展和覆盖,但通常这不是一个好主意。更多信息:ArrayListtoString