概述
1. 迭代器Iterator的作用
什么是迭代器?
迭代器: 可以被next()函数调用并不断返回下一个值的对象称之为迭代器(Iterator)
从另一种角度来定义迭代器就是:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。迭代器模式,就是为容器而生。
迭代器的作用是什么?
1.Iterator对象称为迭代器(设计模式的一种),主要用于遍历Collection 集合中的元素。
2.迭代是访问集合元素的一种方式,迭代器是一个能够记住遍历位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束,如果想访问一个元素,需要把这个元素前面的所有元素都遍历后,才可以访问
3.Collection集合接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。
注意:
Iterator 仅用于遍历集合,Iterator本身并不提供承装对象的能力。如果需要创建Iterator 对象,则必须有一个被迭代的集合。
2. 迭代器Iterator的使用
迭代器的执行原理:(来源于网络图片)
使用迭代器遍历collection集合元素:(hasNext()和 next()方法)
代码演示:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 使用迭代器遍历collection集合元素
* 内部的方法:hasNext()和 next()
*/
public class IteratorTest {
public void test(){
Collection c= new ArrayList();
c.add(123);
c.add(456);
c.add(new Cat("Tom",2));
c.add(new String("Jery"));
c.add(true);
Iterator iterator = c.iterator();
//方式一:
//在调用it.next()方法之前必须要调用it.hasNext()方法进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常。
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// //报异常:NoSuchElementException
// System.out.println(iterator.next());
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
Iterator迭代器remove()方法的使用
代码演示:
public class IteratorTest {
public void test(){
Collection c= new ArrayList();
c.add(123);
c.add(456);
c.add(new Cat("Tom",2));
c.add(new String("Jery"));
c.add(true);
Iterator iterator = c.iterator();
while(iterator.hasNext()){
Object obj = iterator.next();
if("Jery".equals(obj)){
iterator.remove();
}
}
//遍历集合
iterator = coll.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
Iterator迭代器一般的用法
以ArrayList为例:
public Iterator<T> iterator() {
return new Iterator<T>() {
private int index = -1;
@Override
public boolean hasNext() {
return ++index<size;
}
@Override
public T next() {
return (T)elementData[index];
}
@Override
public T remove() {
T t = next();
ArrayList.this.remove(index);
index--;
return t;
}
};
}
总结:
- 使用方法**iterator()**要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素;
- 使用**hasNext()**检查序列中是否有元素;
- 使用**next()**获取序列中下一个元素;
- 使用**remove()**将迭代器新返回的元素删除。
最后
以上就是潇洒发箍为你收集整理的迭代器Iterator接口的作用及其使用1. 迭代器Iterator的作用2. 迭代器Iterator的使用的全部内容,希望文章能够帮你解决迭代器Iterator接口的作用及其使用1. 迭代器Iterator的作用2. 迭代器Iterator的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复