Iterator和ListIterator

Iterator

  • 迭代器接口,提供遍历所有Collection的接口

  • hasNext():如果迭代器中还有元素,则返回true。

  • next():返回迭代器中的下一个元素

  • remove():删除迭代器新返回的元素。

    每调用一次next()方法,remove()方法只能被调用一次,如果违反这个规则将抛出一个异常。
    Iterator在遍历过程中使用了锁定,Iterator.remove()是唯一安全的方式来在迭代过程中修改集合;如果在迭代过程中以任何其它的方式修改了基本集合将会产生未知的行为。

    ArrayList<String> arr = new ArrayList<String>("a","b","c");
    Iterator<String> it = arr.iterator();
    while (it.hasNext()) {
    	String t = it.next();
    	if ("b".equals(t)) {
    	it.remove();
    }
    

Collection接口有迭代器方法,其实现类都有Iterator()。在这里插入图片描述
如果遍历的是Map,那么用Map的entrySet()方法获得Set<Entry<K, V>>,通过Set来获取迭代器。

ListIterator

  • 继承于Iterator接口,只能用于各种List类型的访问。

  • listIterator()方法产生一个指向List开始处的ListIterator,listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。

  • 除了hasNext()、next()、remove(),还有:

    • add():在next()方法返回的元素之前或previous()方法返回的元素之后插入一个元素
    • hasPrevious():前面是否有元素
    • nextIndex():下一个元素的索引
    • previous():前一个元素
    • previousIndex():前一个元素的索引
    • set():修改访问的最后一个元素
  • ListIterator可以双向遍历、添加元素、修改元素、获取索引。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值