Iterator迭代器和增强for
Iterator接口
java.util.Iterator
Iterator接口用于遍历 collection
中的元素,因此Iterator对象被称为迭代器。
Iterator接口的常用方法如下:
public E next()
:返回迭代的下一个元素。public boolean hasNext()
:如果仍有元素可以迭代,则返回 true。
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args) {
// 使用多态方式 创建对象
Collection<String> test = new ArrayList<String>();
// 添加元素到集合
test.add("A");
test.add("B");
test.add("C");
//遍历
//使用迭代器 遍历 每个集合对象都有自己的迭代器
Iterator<String> it = test.iterator();
// 泛型指的是 迭代出 元素的数据类型
while(it.hasNext()){ //判断是否有迭代元素
String s = it.next();//获取迭代出的元素
System.out.println(s);
}
}
}
当集合中没有元素后,仍然去next对象的话,程序会报出
java.util.NoSuchElementException
没有集合元素的错误
增强for
增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
一个常用增强for遍历数组的例子:
public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
for (int i : arr) { //此处i代表数组中的每一个元素
System.out.print(i + "\t");//1 2 3 4 5
}
}
}
遍历集合的例子:
import java.util.ArrayList;
import java.util.Collection;
public class Test2 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("A");
collection.add("B");
collection.add("C");
collection.add("D");
collection.add("E");
for (String a : collection) { //ABCDE
System.out.print(a);
}
}
}
增强for循环遍历的目标只能是Collection或者是数组(目前我只使用到这两种,后续有其他使用我再继续补充)。且增强for只以遍历操作出现
(感悟:刚开始使用的时候误认为是一种简写,就当一个格式记了下来,在后期仔细的查阅了后,才发现有具体的内容介绍。内部原理是一个Iteartor迭代器)