Java 映射的LinkedList实现中的迭代器函数不起作用

Java 映射的LinkedList实现中的迭代器函数不起作用,java,dictionary,linked-list,iterator,listiterator,Java,Dictionary,Linked List,Iterator,Listiterator,我有一个类ListMap,它有一个嵌套的类ListMapEntry,该类实现了一个类Entry。在ListMap中,我以LinkedListSide的形式创建了一个列表,您在循环中调用了两次next()。但除此之外,我们还可以将其视为一个。如果您没有进入while循环,请检查this.entries()是否返回某些内容。正如@JonSkeet所提到的,您将在循环中进行两次下一次调用,请小心……为了不获得任何额外的输出,您必须使用迭代器。hasNext()返回false,即列表为空。@OldCur

我有一个类
ListMap
,它有一个嵌套的类
ListMapEntry
,该类实现了一个类
Entry
。在
ListMap
中,我以
LinkedListSide的形式创建了一个列表,您在循环中调用了两次
next()
。但除此之外,我们还可以将其视为一个。如果您没有进入while循环,请检查this.entries()是否返回某些内容。正如@JonSkeet所提到的,您将在循环中进行两次下一次调用,请小心……为了不获得任何额外的输出,您必须使用
迭代器。hasNext()
返回
false
,即列表为空。@OldCurmudgeon,这很有意义-但是如果我在列表中放入一些条目并打印映射,它将显示正确的大小(
list.size()
),但仍然没有元素?@JonSkeet我已将整个类添加到我的帖子中,但没有添加接口等。
@Override
public Iterator<K> keys() {
    return new Iterator<K>() {
        Iterator<Entry<K,V>> iterator = list.iterator();

        @Override
        public boolean hasNext() {
            return iterator.hasNext();
        }

        @Override
        public K next() {
            return iterator.next().key();
        }
    };
}

@Override
public Iterator<V> values() {
    return new Iterator<V>() {
        Iterator<Entry<K,V>> iterator = list.iterator();

        @Override
        public boolean hasNext() {
            return iterator.hasNext();
        }

        @Override
        public V next() {
            return iterator.next().value();
        }
    };
}

@Override
public Iterator<Entry<K, V>> entries() {
    return list.iterator();
}
public String toString() {
    String output = this.size() + ": ";
    Iterator<Entry<K, V>> iterator = this.entries();

    while (iterator.hasNext()) {
        output += "(" + iterator.next().key() + ", " + iterator.next().value() + ") ";
    }

    return output;
}
public String toString() {
    String output = this.size() + ": ";
    Iterator<Entry<K, V>> iterator = this.entries();

    if (iterator == null) {
        return output;
    }
    else {
        while (iterator.hasNext()) {
            Entry<K, V> entry = iterator.next();
            output += "(" + entry.value().toString() + ", " + entry.key().toString() + ") ";
        }
    }

    return output;
}