Java Iterator(迭代器)

Java 迭代器

迭代器 Iterator 是一个可以用来循环集合的对象,比如 ArrayList and HashSet。之所以称为 "迭代器",因为 "迭代" 是循环的技术术语。

要使用迭代器,必须从 java.util 包中导入。


获取迭代器

iterator() 方法可用于获取任何集合的迭代器:

实例
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. public class Main {
  4. public static void main(String[] args) {
  5. // Make a collection
  6. ArrayList<String> cars = new ArrayList<String>();
  7. cars.add("Volvo");
  8. cars.add("BMW");
  9. cars.add("Ford");
  10. cars.add("Mazda");
  11. // Get the iterator
  12. Iterator<String> it = cars.iterator();
  13. // Print the first item
  14. System.out.println(it.next());
  15. }
  16. }

循环遍历集合

要循环遍历集合,请使用迭代器 IteratorhasNext()next() 方法:

实例
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. public class Main {
  4. public static void main(String[] args) {
  5. // Make a collection
  6. ArrayList<String> cars = new ArrayList<String>();
  7. cars.add("Volvo");
  8. cars.add("BMW");
  9. cars.add("Ford");
  10. cars.add("Mazda");
  11. // Get the iterator
  12. Iterator<String> it = cars.iterator();
  13. // Loop through a collection
  14. while(it.hasNext()) {
  15. System.out.println(it.next());
  16. }
  17. }
  18. }

从集合中移除项

迭代器的设计目的是方便地更改它们循环使用的集合。remove() 方法可以在循环时从集合中移除项。

实例

使用迭代器从集合中删除小于 10 的数字:

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. public class Main {
  4. public static void main(String[] args) {
  5. ArrayList<Integer> numbers = new ArrayList<Integer>();
  6. numbers.add(12);
  7. numbers.add(8);
  8. numbers.add(2);
  9. numbers.add(23);
  10. Iterator<Integer> it = numbers.iterator();
  11. while(it.hasNext()) {
  12. Integer i = it.next();
  13. if(i < 10) {
  14. it.remove();
  15. }
  16. }
  17. System.out.println(numbers);
  18. }
  19. }
注意:在使用 for 循环或 for-each 循环时,删除项将无法正常运行,因为删除项改变了集合的大小而影响了进行中的循环。