关于ListIterator的用法

需要的注意点:

1.

正向遍历不需要传入数组长度值,反向遍历需要传入list的数组长度(迭代器指针指向最后一个位置)

2.

反向遍历,调用previous()获取元素,下标不会加1操作;

正向遍历,调用next()获取元素,下标会加1操作;

3.

previousIndex()获取的是上一个元素的下标,nextIndex()获取的是当前元素的下标(不是下一个元素的下标)

List<String> list = new ArrayList<String>();
        list.add("s");
        list.add("j");
        list.add("y");
        // 正向遍历--不需要传入list的数组长度
        // 反向遍历--要传入list的数组长度(迭代器指针指向最后一个位置)
        ListIterator<String> listIterator1 = list.listIterator(list.size());
        while (listIterator1.hasPrevious()) {
            // 反向遍历,调用previous()获取元素,下标不会加1操作
            // 正向遍历,调用next()获取元素,下标会加1操作
            String previous = listIterator1.previous();
            if ("j".equals(previous)) {
                System.out.println(listIterator1.nextIndex()); // 输出1
                System.out.println(listIterator1.previousIndex()); // 输出0
            }
        }
        ListIterator<String> listIterator2 = list.listIterator();
        while (listIterator2.hasNext()) {
            // 一旦调用next()方法,下标位置会加1
            String next = listIterator2.next();
            if ("j".equals(next)) {
                // 获取next元素下一个元素的下标
                // 当前已调用next方法,所以下标已经加1,而nextIndex返回的为当前下标(可通过源码查看,next不是下一个,而是当前下标)
                System.out.println(listIterator2.nextIndex()); // 输出2
                // 获取next元素的下标(当前已调用next方法,所以下标已经加1, 通过previousIndex获取上一个下标)
                System.out.println(listIterator2.previousIndex());; // 输出1
            }
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值