迭代器
迭代是指先判断一个列表中是否有元素,若有则取出来,再继续判断,一直到把集合中的所有元素全部取出。迭代器是指一种通用的取出各种集合中元素的方式。Iterator迭代器是一个接口,我们无法直接使用,只能通过它的实现类的对象来使用它。可以通过集合Collection中的Iterator方法来获取迭代器的实现类对象。
迭代器中的方法介绍
-
hasNext( )方法:这个方法的返回值是布尔型,它的作用是判断集合中是否有下一个元素。若有下一个元素则返回true,否则返回false,它的初始索引是-1。
-
next( )方法:取出hasNext( )索引的下一个索引位置的元素,返回值类型为要返回的元素的类型。
示例如下:
package com.pyi.blog;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* @author DELL
* @ClassName IteratorTest
* @date 2022/4/28
* version 1.0
*/
public class IteratorTest {
public static void main(String[] args) {
Collection obj=new ArrayList();
obj.add(1);
obj.add(2);
obj.add(3);
obj.add(4);
Iterator itr=obj.iterator();//获取迭代器接口的实现类的对象
while(itr.hasNext()!=false){
System.out.println(itr.hasNext());
System.out.println(itr.next());
}
}
}
运行结果如下:
- remove( ): 从基础集合中移除此迭代器返回的最后一个元素。每次调用next( )时只能调用此方法一次。
示例如下:
当没有调用remove( )方法时,该列表中有四个元素,分别是1,2,3,4。
当调用remove( )方法后:
package com.pyi.blog;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* @author DELL
* @ClassName IteratorTest
* @date 2022/4/28
* version 1.0
*/
public class IteratorTest {
public static void main(String[] args) {
Collection obj=new ArrayList();
obj.add(1);
obj.add(2);
obj.add(3);
obj.add(4);
Iterator itr=obj.iterator();
System.out.println(itr.hasNext());
System.out.println(itr.next());
itr.remove();
Iterator itr1= obj.iterator();
System.out.println(itr.hasNext());
System.out.println(itr.next());
}
}
运行结果如下:
此时,在第一个迭代器运行时,此列表的第一个元素还是1,而调用了remove()方法后,再次迭代时,原来的第一个元素就被删除了,此列表中的第一个元素变为了2。因为调用remove( )方法前,调用的next( )方法返回的最后一个元素是此列表原先的第一个元素(即1)。