zoukankan      html  css  js  c++  java
  • 集合框架总结笔记二

    关于迭代器

    Iterator(迭代器)是一个专门用于取出Collection集合中元素的接口,它以内部类的方式封装在Collection接口的实现类中,根据Collection接口各个实现类的数据结构不同,有着不同实现方式。而在Collection接口中定义取出Iterator对象的抽象方法。迭代器的出现统一了取出Collection集合元素的过程。Iterator接口中有hashNext()、next()和remove()方法。在使用迭代器迭代元素时,只能从前向后顺序迭代。

    hasNext()

    如果仍有元素可以迭代,则返回 true。(换句话说,如果 next 返回了元素而不是抛出异常,则返回 true)。 

    返回:

    如果迭代器具有多个元素,则返回 true。

    next()

    返回迭代的下一个元素。 

    返回:

    迭代的下一个元素。

    抛出:

    NoSuchElementException- 没有元素可以迭代。

    void remove()

    从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的 collection,则迭代器的行为是不确定的。 

    抛出:

    UnsupportedOperationException- 如果迭代器不支持 remove 操作。

    IllegalStateException- 如果尚未调用 next 方法,或者在上一次调用 next 方法之后已经调用了 remove 方法。

    ListIterator系列表迭代器

    ListIterator(列表迭代器)是一个专门用于迭代List集合中元素的接口,它继承自Iterator接口,但是由于List集合元素有索引这一特殊性,ListIterator不仅具有Iterator中3个方法,还有add(),remove(),previous()等方法,不仅能在迭代过程中对集合中的元素进行增删或修改,还能反向迭代。

    void add(E e)

    将指定的元素插入列表(可选操作)。该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);如果列表没有元素,那么新元素就成为列表中的唯一元素。新元素被插入到隐式光标前:不影响对 next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndex 或 previousIndex 所返回的值增加 1)。 

    参数:

    e- 要插入的元素。

    抛出:

    UnsupportedOperationException- 如果列表迭代器不支持 add 操作。

    ClassCastException- 如果指定元素的类不允许该元素添加到此列表。

    IllegalArgumentException- 如果此元素的某个方面不允许该元素添加到此

    remove

    void remove()

    从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。对于每个 next 或 previous 调用,只能执行一次此调用。只有在最后一次调用 next 或 previous 之后,尚未调用 ListIterator.add 时才可以执行该调用。 

    指定者:

    接口 Iterator<E> 中的 remove

    抛出:

    UnsupportedOperationException- 如果列表迭代器不支持 remove 操作。

    IllegalStateException- 既没有调用 next 也没有调用 previous,或者在最后一次调用 next 或 previous 后调用了 remove 或 add。

    previous()

    返回列表中的前一个元素。可以重复调用此方法来迭代列表,或混合调用 next 来前后移动(注意交替调用 next 和 previous 将重复返回相同的元素)。 

    返回:

    列表中的上一个元素。

    抛出:

    NoSuchElementException- 如果没有可迭代的上一个元素。

  • 相关阅读:
    事务
    javascript用window open的子窗口关闭自己并且刷新父窗口
    设置eclipse自动生成的author等注释
    使用Mockito对类成员变量进行Mock
    Linux进程简介
    WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类
    长连接的定义及其优缺点,以及在不同的浏览器中的支持情况
    Sql为什么连接不上服务器上的数据库
    mysql批量导入已经格式好的文本数据
    Ant是什么
  • 原文地址:https://www.cnblogs.com/QuestionsZhang/p/9686581.html
Copyright © 2011-2022 走看看