概述
Iterator迭代器
迭代器是允许一致的方法对集合对象的元素进行访问
boolean | hasNext() 如果仍有元素可以迭代,则返回 true 。 |
---|---|
E | next() 返回迭代的下一个元素。 |
void | remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 |
//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);
}
}
张三
李四
王五
[张三, 李四]
在迭代过程中调用集合的 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. Iterator是做迭代的,而Iterable是提供迭代器的。
2. 如果不设置Iterator,把next,hasNext等塞到集合里,那么这个集合就有了状态,因为必须在内部记录当前指针(cursor)所在位置。
3. 这样是不合理的。如果这么做就没办法在嵌套循环时对同一个集合做循环。
4. 不能够多线程
最后
以上就是超级宝马为你收集整理的迭代器接口------Iterator,ListIterator和Iterable的全部内容,希望文章能够帮你解决迭代器接口------Iterator,ListIterator和Iterable所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复