回味集合(七)Iterator与ListIterator

迭代器

  • 迭代器(也是一种设计模式)是一个对象,他的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构,此外迭代器通常被称为轻量级对象,创建他的代价小。

  • 在java中有两个熟悉的迭代器IteratorListIterator

Iterator

  • 源码
public interface Iterator<E> {
  
  // 检查序列中是否还有下一个元素
   boolean hasNext();

  // 获取序列中的下一个元素
   E next();
   
   // 将迭代器新近返回的元素删除
   default void remove() {
       throw new UnsupportedOperationException("remove");
   }

 // 
   default void forEachRemaining(Consumer<? super E> action) {
       Objects.requireNonNull(action);
       while (hasNext())
           action.accept(next());
   }
}
  • 只能单向移动

ListIterator

  • 源码
public interface ListIterator<E> extends Iterator<E> {
   
   // 检查序列中是否还有下一个元素
    boolean hasNext();

    //  获取序列中的下一个元素
    E next();

   // 检查序列中是否还有上一个元素
    boolean hasPrevious();

    // 获取序列中的上一个元素
    E previous();

   // 下一个元素的下标
    int nextIndex();

    // 上一个元素的下标
    int previousIndex();

    // 将迭代器新近返回的元素删除
    void remove();

   // 设置元素
    void set(E e);

   // 添加元素
    void add(E e);
}
  • ListIterator是一个更加强大的Iterator的子类,他只能用于访问各种List类
  • ListIterator可以双向移动
  • 还可以产生相对迭代器在列表中指向的当前位置的前一个和后一个元素的索引
  • 可以使用set方法替换他访问过的最后一个元素
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值