ArrayList打印出來爲什麼會有空格

 

問題描述

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

結果輸出:

[張三, 李四, 王五]

結果中我們不難發現,從第二個數據開始,每個數據的前面多了一個空格。

問題查找

首先我們來看看ArrayList的定義:

public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable

在我們ArrayList中我們並沒有看到toString的具體實現。我們猜測,這個toString方法應該是從AbstractList類中繼承而來的。而AbstractList中也並沒有toString方法。

繼續向上看AbstractList的定義:

public abstract class AbstractList extends AbstractCollection implements List

我們在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()方法的時候,出現了空格。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章