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(' ');
}
}
你說的這個是Object類別的預設實作
實際上,LinkedList的toString()的輸出是這樣的
這是為啥呢?請看下圖:
看到這裡,應該理解了吧?從圖中,可以看到,它的祖先類中有一個AbstractCollection# 🎜🎜#而在這個類別中,有一個
toString()的覆蓋:
我的怎麼跟你的不一樣…你的程式碼? JRE版本?
java就是這樣設計的,可能你認為
LinkedList
的toString
应该把所有Object
打印出来,但java设计者就认为只打印LinkedList
本身的簡短訊息就好了。你可以自己寫個函數實作這個功能,很簡單,循環一下就行了。