Iterator迭代器
来源:互联网 发布:网络推广费用预算 编辑:程序博客网 时间:2024/06/03 18:19
Iterator接口共包含4个方法:
public interface Iterator<E> { E next(); boolean hasNext(); void remove(); default void forEachRemaining(Consumer<? super E> action){};}
1. 反复调用next()方法就可以逐个的遍历集合中的元素,如果在集合末尾调用next()方法就会抛出NoSuchElementException异常
2. 为了防止抛出这样的异常,我们在利用Iterato遍历集合元素时需要将next()和hasNext()配对使用,每次在调用next()方法迭代下一个元素时,应该先调用hasNext()方法检查是否存在下一个元素
3. 在Java SE 8中,甚至不用写循环。可以调用forEachRemaining()方法并提供一个lambda表达式。将对迭代器的每一个元素调用这个lambda表达式,直到没有元素
iterator.forEachRemaining(element -> /*do something with element*/);
4. 元素被访问的顺序取决于集合类型,如果对ArrayList进行迭代,迭代器将会从索引 0 开始,每迭代一次索引值加 1。然而,如果访问HashSet中的元素, 每个元素将会按照某种随机顺序次序出现。虽然可以确定在迭代过程中能够遍历到集合中的每一个元素,但却无法预知元素的访问次序
5. Java与C++的迭代器有本质区别。在C++中,迭代器是根据数组索引建模的,可以直接根据索引查找指定位置的元素。但是,Java中的迭代器不是如此,查找一个元素的唯一方法是next()方法,而且 Java 的迭代器在集合上顺序移动。可以将 Java 迭代器认为是位于两个元素之间,当调用next()方法时,迭代器越过下一个元素,并返回当前元素
6. next方法与 remove方法具有相互依赖性,如果调用remove之前没有调用next将会是不合法的。
iterator.remove();iterator.remove(); //Error!//不能连续删除,必须先将iterator移向下一个元素iterator.remove();iterator.next();iterator.remove(); //OK!
阅读全文
0 0
- Iterator(迭代器)
- Iterator-迭代器
- 迭代器 iterator
- Iterator迭代器
- 迭代器Iterator
- Iterator : 迭代器
- Iterator : 迭代器
- 迭代器Iterator
- 迭代器iterator
- Iterator迭代器
- Iterator迭代器
- iterator (迭代器)
- 迭代器iterator
- 迭代器iterator
- 迭代器 iterator
- 迭代器 Iterator
- 迭代器Iterator
- 迭代器iterator
- (新) Kotlin搞起来 —— 5.泛型
- Js常用的内置对象
- oracle的sqlplus设置显示行数和列数
- Box-sizing 中的content-sizing 和 border-sizing
- 顺时针打印矩阵
- Iterator迭代器
- jsonp 跨域请求
- 一款专业的Mac卸载清理工具
- Java Web基础知识之文件上传
- 深入研究HTML5实现图片压缩上传
- mongo 中地理空间索引
- HDU6034 Balala Power! -2017多校联盟1 第2题
- 高通滤波器 python实现
- 一步一步教你使用SpringSecurity