そのため、LinkedListsをよりよく理解しようとしています。演習では、作成remove()
したリンクリストクラスのイテレータクラスのメソッドを実装するように指示しています。私のイテレータクラスは次のようになります。
public java.util.Iterator<T> iterator() {
return new java.util.Iterator<T>() {
Node prev= null,curr = head;
public boolean hasNext() {
if (curr != null) {
return true;
}
return false;
}
public T next() {
T temp = curr.data;
prev = curr;
curr = curr.next;
return temp;
}
public void remove() {
if(prev==null || curr==null)
head=head.next;
else
prev.next=curr.next;
}
};
}
そして、私が書いたテストは、次のようになります。
public void testiterator(){
BasicLinkedList<String> basicList = new BasicLinkedList<String>();
basicList.addToFront("Blue").addToEnd("Red").addToFront("Yellow");
for(Iterator<String> i = basicList.iterator(); i.hasNext();){
if(i.next().equals("Blue"))
i.remove();
}
assertTrue(basicList.toString().equals("\" Yellow Red \""));
}
ただし、basicListを印刷すると、リストに黄色と赤ではなく黄色と青が含まれていることがわかります。メソッドを間違って実装しremove()
ていますか、間違って使用していますか、またはその両方ですか?
お時間をいただきありがとうございます!