Iterator迭代器
迭代器是允许一致的方法对集合对象的元素进行访问
boolean | hasNext() 如果仍有元素可以迭代,则返回 true 。 |
---|---|
E | next() 返回迭代的下一个元素。 |
void | remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 |
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22//remove 用法 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorPractice01 { public static void main(String[] args) { Collection<String> practice = new ArrayList<>(); practice.add("张三"); practice.add("李四"); practice.add("王五"); Iterator<String> c = practice.iterator(); System.out.println(c.next()); System.out.println(c.next()); System.out.println(c.next()); //删除迭代器当前所指向的元素 c.remove(); System.out.println(practice); } }
复制代码
1
2
3
4
5张三 李四 王五 [张三, 李四]
复制代码
1
2
3在迭代过程中调用集合的 remove(Object o) 可能会报 java.util.ConcurrentModificationException 异常 forEachRemaining 方法中 调用Iterator 的 remove 方法会报 java.lang.IllegalStateException 异常
ListIterator
void | add(E e) 将指定的元素插入列表(可选操作)。 |
---|---|
boolean | hasNext() 以正向遍历列表时,如果列表迭代器有多个元素,则返回 true (换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true )。 |
boolean | hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true 。 |
E | next() 返回列表中的下一个元素。 |
int | nextIndex() 返回对 next 的后续调用所返回元素的索引。 |
E | previous() 返回列表中的前一个元素。 |
int | previousIndex() 返回对 previous 的后续调用所返回元素的索引。 |
void | remove() 从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。 |
void | set(E e) 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。 |
Iterable
Iterator<T> | iterator() 返回一个在一组 T 类型的元素上进行迭代的迭代器。 |
---|---|
为什么不用Iterator而使用Iterable实现Colletion的接口
复制代码
1
2
3
4
51. Iterator是做迭代的,而Iterable是提供迭代器的。 2. 如果不设置Iterator,把next,hasNext等塞到集合里,那么这个集合就有了状态,因为必须在内部记录当前指针(cursor)所在位置。 3. 这样是不合理的。如果这么做就没办法在嵌套循环时对同一个集合做循环。 4. 不能够多线程
最后
以上就是超级宝马最近收集整理的关于迭代器接口------Iterator,ListIterator和Iterable的全部内容,更多相关迭代器接口------Iterator内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复