Java Iterator(迭代器)
Java 迭代器
迭代器 Iterator 是一个可以用来循环集合的对象,比如 ArrayList and HashSet。之所以称为 "迭代器",因为 "迭代" 是循环的技术术语。
要使用迭代器,必须从 java.util 包中导入。
获取迭代器
iterator() 方法可用于获取任何集合的迭代器:
实例
import java.util.ArrayList;import java.util.Iterator;public class Main {public static void main(String[] args) {// Make a collectionArrayList<String> cars = new ArrayList<String>();cars.add("Volvo");cars.add("BMW");cars.add("Ford");cars.add("Mazda");// Get the iteratorIterator<String> it = cars.iterator();// Print the first itemSystem.out.println(it.next());}}
循环遍历集合
要循环遍历集合,请使用迭代器 Iterator 的 hasNext() 和 next() 方法:
实例
import java.util.ArrayList;import java.util.Iterator;public class Main {public static void main(String[] args) {// Make a collectionArrayList<String> cars = new ArrayList<String>();cars.add("Volvo");cars.add("BMW");cars.add("Ford");cars.add("Mazda");// Get the iteratorIterator<String> it = cars.iterator();// Loop through a collectionwhile(it.hasNext()) {System.out.println(it.next());}}}
从集合中移除项
迭代器的设计目的是方便地更改它们循环使用的集合。remove() 方法可以在循环时从集合中移除项。
实例
使用迭代器从集合中删除小于 10 的数字:
import java.util.ArrayList;import java.util.Iterator;public class Main {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<Integer>();numbers.add(12);numbers.add(8);numbers.add(2);numbers.add(23);Iterator<Integer> it = numbers.iterator();while(it.hasNext()) {Integer i = it.next();if(i < 10) {it.remove();}}System.out.println(numbers);}}
注意:在使用 for 循环或 for-each 循环时,删除项将无法正常运行,因为删除项改变了集合的大小而影响了进行中的循环。