回味集合(一)Iterator

在这里插入图片描述

啥也别说先欣赏一下"美图"。

从上图中我们会发现Iterator是大集合的祖宗,那我们就先看一下Iterator吧。

  public interface Iterator<E> 

Iterator是一个接口,中文名叫迭代器。定义的功能是对各种数据集合的迭代。我们来逐步分析它。其内部方法:

1.boolean hasNext();
2.E next();
3.default void remove() {
        throw new UnsupportedOperationException("remove");
    }
4. default void forEachRemaining(Consumer<? super E> action) {
        Objects.requireNonNull(action);
        while (hasNext())
            action.accept(next());
    }    

我们会发现在接口中尽然会有方法体,这就是JAVA8的新特性:default关键字,想了解更多关于default关键字的知识,可以看这篇文章学习:详细分析Java8中default关键字

  1. hasNext:如果迭代具有更多元素,·hasNext在操作下一个元素之前会进行判断是否存在下一个元素,存在则返回true,反之false,通常用于指示迭代是否完成。
  2. next用于返回当前迭代位置的下一个迭代元素。但是,如果到达了集合的末尾,next方法将抛出一个NoSuchElementException

在实际中的应用如下:

//定义一个集合
Collection<String> c = ...;
//请求一个迭代器
Iterator iter=c.iterator();
//判断是否存在下一个元素
while(iter.hashNext){
//获取当前元素
  String str = iter.next();
}

3.remove将会删除上次调用next方法时返回的元素。在大多数情况下,在决定删除某个元素之前应该先看一下这个元素是否具有实际意义,更重要的是,对next方法和remove方法的调用具有相互依赖性,如果调用remove之前没有调用next将是不合法的。如果这样做,将会抛出一个IllegalStateException异常。
4.forEachRemaining用于支持lambda的操作。

Iterator迭代器 通常 由具有 “迭代能力” 的类(即实现了Iterable接口)调用 iterator()方法得到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值