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;
}