迭代器Iterator的学习

1、迭代器的创建和使用

利用Iterator接口创建迭代器,Iterator接口位于java.util包下。Iterator接口中有3个方法。

  • hasNext():如果仍有元素可以迭代,则返回true。
  • next():返回迭代的下一个元素。
  • remove():从迭代器指向的collection中移除迭代器返回的最后一个元素(可选操作)。

ListIterator接口继承了Iterator接口,下面通过一个简单的实例演示迭代器的用法。

例1:创建ListIteratorDemo类,在main()方法中创建一个ArrayList对象,然后打印集合中的元素和位置等信息。

package test;

import java.util.*;

public class Main{
    public static void main(String[] args){
        //创建一个ArrayList,其中能够保存的数据类型是Integer
        ArrayList<Integer> array = new ArrayList<Integer>();
        Collections.addAll(array,1,2,3,4,5,6);
        System.out.println("集合中的元素:"+array);
        ListIterator<Integer> iterator = array.listIterator();
        boolean hasNext = iterator.hasNext();
        System.out.println("集合中是否具有下一个元素:"+hasNext);
        boolean hasPrevious = iterator.hasPrevious();
        System.out.println("集合是否具有前一个元素:"+hasPrevious);
        int next = iterator.next();
        System.out.println("获得集合的下一个元素:"+next);
        int nextIndex = iterator.nextIndex();
        System.out.println("获得集合的下一个元素的索引:"+nextIndex);
        int previous = iterator.nextIndex();
        System.out.println("获得集合的前一个元素;"+previous);
        int previousIndex = iterator.previousIndex();
        System.out.println("获得集合的前一个元素的索引:"+previousIndex);
        iterator.add(7);
        System.out.println("向集合中添加元素7后的集合:"+array);
        iterator.next();
        iterator.set(12);
        System.out.println("将获得的下一个元素修改成12后的集合:"+array);
        iterator.remove();
        System.out.println("将获得的下一个元素删除后的集合:"+array);
    }
}

获得的集合的前一个元素的索引不一样。向集合中添加元素的位置也不一样。为什么???

例2:Iterator遍历ArrayList

package test;

import java.util.*;

public class Main{
    public static void main(String[] args){
        List<Integer> list = new ArrayList<Integer>();//创建列表
        for(int i = 0;i < 10;i++){
            list.add(i);
        }
        System.out.println("列表中的全部元素:");
        for(Iterator<Integer> it = list.iterator();it.hasNext();){
            System.out.print(it.next()+" ");
        }
    }
}

例3: ListIterator遍历ArrayList

对于列表而言,除了Iterator,java语言还提供了一个功能更加强大的ListIterator,它可以实现逆序遍历列表中的元素。本范例将使用其逆序遍历ArrayList。

package test;

import java.util.*;

public class Main{
    public static void main(String[] args){
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0;i < 10;i++){
            list.add(i);
        }
        System.out.println("列表中的全部元素:"+list);
        System.out.println("逆序输出列表中的元素:");
        ListIterator<Integer> li = list.listIterator();//必须放到这里,因为是两个for,放到for里就成了局部变量了
        for(li = list.listIterator();li.hasNext();){//将游标定位到列表结尾
            li.next();
        }
        for(;li.hasPrevious();){
            System.out.print(li.previous()+" ");
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值