Java doublylinkedlist的迭代器,如何实现next(),remove()?

Java doublylinkedlist的迭代器,如何实现next(),remove()?,java,iterator,linked-list,Java,Iterator,Linked List,下一个()和删除()我遇到了问题。 对于next(),我想返回列表中的下一个元素。 对于remove(),从基础集合中移除迭代器返回的最后一个元素(可选操作) 我知道我应该做什么,但是我在写代码时遇到了麻烦。有人能给我一些提示吗?或者向我解释我该怎么做 这是我的代码,一片混乱 class DoublyLinkedList12Iterator implements Iterator { private Node cursor; private Node lastNo

下一个()和删除()我遇到了问题。 对于next(),我想返回列表中的下一个元素。 对于remove(),从基础集合中移除迭代器返回的最后一个元素(可选操作)

我知道我应该做什么,但是我在写代码时遇到了麻烦。有人能给我一些提示吗?或者向我解释我该怎么做

这是我的代码,一片混乱

    class DoublyLinkedList12Iterator implements Iterator
    {
    private Node cursor;
    private Node lastNodeReturned;
    private Node cursorNext = cursor._next;
    private int nextIndex = 0;
    // private int prevIndex = -1;
    private boolean _hasNextBeenCalled = false;
    private int _currentIndex = -1;


    //Returns true if the iteration has more elements
        public boolean hasNext() {
            return _currentIndex < (_size -1);
        }


    //returns the next element in the iteration
        public Object next() 
        {


        _currentIndex++;
        _hasNextBeenCalled = true;

        /*if(nextIndex == 0)
        {
           nextIndex++;
           return _head._next;
        }*/


        if(cursor != null)
        {
           cursor = cursor._next;
        }
        else
        {
           throw new NoSuchElementException();
        }


        //cursor = cursor._next;
        lastNodeReturned = cursor;
        return cursor._data;




        /*prevIndex--;
        nextIndex++;
        return cursor;

        this._prev = this._next;
        if(this._next != null);
        return the first node  

                Node cursor = _head;
                    for(int i = _currentIndex; i < _size ; i++)
                    {
                    cursor = cursor._next;
                    }
                    return cursor._data;
        */
            }


        public void remove() 
        {


        if(!_hasNextBeenCalled)
        {
           throw new IllegalStateException();
        }

        _hasNextBeenCalled = false;

        if(cursor == lastNodeReturned)
        {
           cursor = cursor._next;
        }
        else
        {
           nextIndex--;
        }

        lastNodeReturned._prev = lastNodeReturned._next;

        _size--;



            }

    }
类DoublyLinkedList12Iterator实现迭代器
{
专用节点游标;
私有节点lastNodeReturned;
私有节点cursorNext=cursor.\u next;
私有int nextIndex=0;
//私有索引=-1;
私有布尔值_hasNextBeenCalled=false;
私有int_currentIndex=-1;
//如果迭代包含更多元素,则返回true
公共布尔hasNext(){
返回_currentIndex<(_size-1);
}
//返回迭代中的下一个元素
公共对象下一个()
{
_currentIndex++;
_hasNextBeenCalled=true;
/*如果(nextIndex==0)
{
nextIndex++;
返回_head._next;
}*/
如果(光标!=null)
{
光标=光标。\u下一步;
}
其他的
{
抛出新的NoTouchElementException();
}
//光标=光标。\u下一步;
lastNodeReturned=光标;
返回游标。\u数据;
/*前置索引--;
nextIndex++;
返回光标;
这个。_prev=这个。_next;
if(this.\u next!=null);
返回第一个节点
节点光标=_头;
对于(int i=\u currentIndex;i<\u size;i++)
{
光标=光标。\u下一步;
}
返回游标。\u数据;
*/
}
公共空间删除()
{
如果(!\u已调用下一个)
{
抛出新的非法状态异常();
}
_hasNextBeenCalled=false;
如果(光标==lastNodeReturned)
{
光标=光标。\u下一步;
}
其他的
{
下一个索引--;
}
lastNodeReturned.\u prev=lastNodeReturned.\u next;
_大小--;
}
}

对不起,问题是什么?这是家庭作业吗?如果是,请添加标记,否则您可以使用ArrayList。这是家庭作业,我在没有迭代器的情况下提交了它。(总比没有好!)问题:如何实现doublylinkedlist迭代器next()&remove()方法。很抱歉,问题是什么?这是家庭作业吗?如果是添加标记,否则可以使用ArrayList。这是家庭作业,我在没有迭代器的情况下提交了它。(总比没有好!)问题:如何实现doublylinkedlist迭代器next()&remove()方法。
public T next() {
if (nextnode == null)
    throw new NoSuchElementException();
currentnode = nextnode;
previousnode = currentnode.previous;
nextnode = currentnode.next;
return currentnode.element;
}

public void remove() {
if (previousnode != null)
    previousnode.next = nextnode;
if (nextnode != null)
    nextnode.previous = previousnode;
}