Java 中 linkedList 类的没有按照Object类toString 方法输出
ringa_lee
ringa_lee 2017-04-17 17:15:22
0
3
513

Java 中 linkedList 类的 toString() 没什么输出的是一个 return getClass().getName() + "@" + Integer.toHexString(hashCode());,我在它的继承中也没有找到 toString 类的重写

ringa_lee
ringa_lee

ringa_lee

全部回覆(3)
洪涛

你說的這個是Object類別的預設實作

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

實際上,LinkedList的toString()的輸出是這樣的

[111, 222, 333]

這是為啥呢?請看下圖:

從圖中,可以看到,它的祖先類中有一個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(' ');
        }
    }
看到這裡,應該理解了吧?

PHPzhong
LinkedList l = new LinkedList();
l.add("hello world");
System.out.println(l.toString()); // 输出[hello world]

我的怎麼跟你的不一樣…你的程式碼? JRE版本?

迷茫

java就是這樣設計的,可能你認為LinkedListtoString应该把所有Object打印出来,但java设计者就认为只打印LinkedList本身的簡短訊息就好了。

你可以自己寫個函數實作這個功能,很簡單,循環一下就行了。

LinkedList<MyObject> list;
// some code
for (MyObject obj: list) {
    System.out.println(obj);
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!