集合框架总结笔记二
关于迭代器
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 时才可以执行该调用。
指定者:
抛出:
UnsupportedOperationException- 如果列表迭代器不支持 remove 操作。
IllegalStateException- 既没有调用 next 也没有调用 previous,或者在最后一次调用 next 或 previous 后调用了 remove 或 add。
previous()
返回列表中的前一个元素。可以重复调用此方法来迭代列表,或混合调用 next 来前后移动(注意交替调用 next 和 previous 将重复返回相同的元素)。
返回:
列表中的上一个元素。
抛出:
NoSuchElementException- 如果没有可迭代的上一个元素。
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)