首页 新闻 会员 周边

Java iterator的问题

0
悬赏园豆:5 [待解决问题]
public class Test1 {
    public static void main(String[] args) throws Exception {
        LinkedList<Integer> list = new LinkedList<>();
        list.add(0);
        list.add(1);
        list.add(2);
        list.add(3);

        ListIterator<Integer> it = list.listIterator();
        list.addFirst(10);
        it.remove();
    }
}

显然这个代码会报错, 因为在调用it.remove()之前, 对list做了修改

那么 在JAVA中 有没有什么办法能够

  1. 可以记录一个元素的位置 (为了方便日后快速删除),
  2. 可以在记录了位置之后对原列表进行更改
  3. 保证数据的顺序像list一样不被改变
    显然LinkedList的迭代器不支持这么搞..

(除了自己实现链表)

KimBing_Ng的主页 KimBing_Ng | 菜鸟二级 | 园豆:352
提问于:2020-04-05 17:35

感觉这个iterator在此例子中没有必要,迭代器一般用来在遍历元素的时候,可能涉及到删除使用。如果有元素的修改,则应该重新获得。而在多线程环境,list就不太适合做共享变量了,采取重新赋值会好一些。

。淑女范erり 4年前
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册