欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

【Java踩坑记】——ArrayList的toString(),arraylisttostring

来源: javaer 分享于  点击 35562 次 点评:116

【Java踩坑记】——ArrayList的toString(),arraylisttostring


问题描述:

        List<String> list=new ArrayList<String>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list.toString());

结果输出:

[张三, 李四, 王五]

从结果我们会发现,不难发现,从第二个数据开始,每个数据的前面多了一个空格字符。

问题查找:

首先我们来看看ArrayList的定义:

public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable

在我们ArrayList中我们并没有看到toString的具体实现。我们猜测,这个toString方法应该是从AbstractList类中继承而来的。而AbstractList中也并没有toString方法。

继续向上看AbstractList的定义:

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

我们在AbstractCollection类中,发现了toString方法。来看看AbstractCollection中的toString的实现:

    public String toString() {
        Iterator<E> it = iterator();
        if (! it.hasNext())
            return "[]";

        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (;;) {
            E e = it.next();
            sb.append(e == this ? "(this Collection)" : e);
            if (! it.hasNext())
                return sb.append(']').toString();
            sb.append(',').append(' ');
        }
    }

从代码中,我们确实可以看到,在toString方法中有一个.append(' ')来拼接了一个空格字符进去。所以我们在使用list.toString()方法的时候,出现了空格。

相关文章

    暂无相关文章

用户点评