Java iterable列表是否因操作而改变?

Java iterable列表是否因操作而改变?,java,list,iterator,Java,List,Iterator,我有自己编码的iterable类,我在演示部分创建了一个iterable列表。这些方法包含在我的类中 public void add(E e); public Node<E> next(); public void hasNext(); public Node<E> previous(); 现在,我们有一个可比较的列表 OwnIterator ite = list.ownIterator(); 然后,我将继续列表并进行一些操作。(此处光标指向0.index) 1-是否

我有自己编码的iterable类,我在演示部分创建了一个iterable列表。这些方法包含在我的类中

public void add(E e);
public Node<E> next();
public void hasNext();
public Node<E> previous();
现在,我们有一个可比较的列表

OwnIterator ite = list.ownIterator();
然后,我将继续列表并进行一些操作。(此处光标指向0.index)

1-是否应该返回7而不是8

2-当光标指向8时调用previous()会怎么样?它返回7还是11?我这里的主要问题是iterable list上的操作是否会影响当前iterable list?总是这样吗

2-11-8-9-20


或者新添加的元素出现在iterable列表中?

好吧,因为您正在实现自己的迭代器,所以您可以做任何对您有意义的事情

如果您希望迭代器符合
java.util.ListIterator
的约定(您必须选择
ListIterator
,因为
java.util.iterator
在迭代集合时添加元素时有未指定的行为),您可以遵循以下逻辑:

void java.util.ListIterator.add(E)

将指定的元素插入列表(可选操作)。该元素紧跟在next返回的元素之前(如果有),紧跟在previous返回的元素之后(如果有)。(如果列表不包含任何元素,新元素将成为列表上的唯一元素。)新元素将插入隐式光标之前:后续调用next将不受影响,后续调用previous将返回新元素。(此调用将调用nextIndex或previousIndex返回的值增加一倍。)

OwnIterator ite = list.ownIterator();
ite.next(); // by this method cursor points out the element at the index 1
ite.next(); // cursor shifts to 2. index
ite.add("7");

//list is 2 -- 11 -- 7 -- 8 -- 9 -- 20 // when we call next() after add(), it returns 8 not 7;