Java中集合类的常见使用方法(4)Iterator迭代器

Iterator:通过指针遍历数组,默认位置在0下标前面。所以在没有获取数据之前直接调用remove会出现错误:

        ArrayList<Integer> data = new ArrayList<>();
        data.add(1);
        data.add(3);
        data.add(5);
        data.add(7);
        data.add(9);
        Iterator<Integer> iterator = data.iterator();
        iterator.remove();

直接运行:

获取到数据在remove:

        Iterator<Integer> iterator = data.iterator();
        iterator.next();
        iterator.next();
        iterator.remove();//指针移动2个位置来到1下标,remove 3
        System.out.println(data);

ListIterator为Iterator的子类,拥有不仅Iterator的所有方法,也可以使用自己的方法如:previous()//返回列表中的上一个元素并向后移动光标位置。

数据还是哪些数据,代码如下:

        ListIterator<Integer> iterator = data.listIterator();
        Integer a = iterator.previous();
        System.out.println(a);

之所以会报错是因为指针默认位置为0下标的前面,如果想要指针向上走,需要先吧指针next到下面

        ListIterator<Integer> iterator = data.listIterator();
        iterator.next();
        iterator.next();
        Integer a = iterator.previous();//光标向下移动2个位置来到下标1 ,向上移动一个位置来到下标0
        System.out.println(a);//previous会返回列表中的当前元素后在向上移动指针,此时返回的数据是2坐标

运行结果

add()对于next()与previous()插入的位置区别:

①previous()

        ListIterator<Integer> iterator = data.listIterator();
        System.out.println(data);
        iterator.next();
        iterator.next();
        Integer a = iterator.previous();//光标向下移动2个位置来到下标1 ,向上移动一个位置来到下标0
        System.out.println("下标为2,a的数据为"+a);//previous会返回列表中的当前元素后在向上移动指针,此时返回的数据是2坐标
        iterator.set(33);//set方法会替换next()或previous()返回的最后一个元素,也就是a的数据
        System.out.println("previous()方法返回的数据3被替换成33");
        System.out.println(data);//此时3被替换
        iterator.add(111);//迭代器也可以添加数据,元素紧接在next()返回的元素右边插入(如果有),并且在previous()返回的元素左边插入 (如果有)。
        System.out.println("此时指针的位置指向0,add()添加在previous()返回的元素左边");
        System.out.println(data);//添加在当前指针位置的左边

运行结果

②nexe()

        ListIterator<Integer> iterator = data.listIterator();
        System.out.println(data);
        Integer a =iterator.next();;//光标向下1个位置来到下标0
        System.out.println("下标为0,a的数据为"+a);//previous会返回列表中的当前元素后在向上移动指针,此时返回的数据是2坐标
        iterator.set(11);//set方法会替换next()或previous()返回的最后一个元素,也就是a的数据
        System.out.println("next方法返回的数据"+a+"被替换成11");
        System.out.println(data);
        iterator.add(222);//迭代器也可以添加数据,元素紧接在next()返回的元素右边插入(如果有)
        System.out.println("此时指针的位置指向0,add()添加在next()返回的元素右边");
        System.out.println(data);//添加在当前指针位置的右边

运行结果

附上图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值