Java集合框架 迭代器
Java 集合框架是 Java 标准库的重要组成部分,提供了丰富的数据结构和算法支持。迭代器(Iterator)是集合框架中用于遍历集合元素的重要工具。下面详细介绍迭代器的相关概念、用法和应用场景。
1. 迭代器(Iterator)
迭代器是 Java 集合框架中用于遍历集合元素的接口。它提供了一种统一的方式来访问集合中的元素,而不暴露底层的数据结构。迭代器的主要方法包括 hasNext()
和 next()
,用于依次访问集合中的元素。
1.1 迭代器接口
迭代器接口 java.util.Iterator
定义了以下方法:
hasNext()
:返回true
如果仍有元素可以迭代。next()
:返回下一个元素。remove()
:(可选)删除上一次返回的元素。
1.2 获取迭代器
获取迭代器的常用方法是调用集合类的 iterator()
方法。
1import java.util.ArrayList;
2import java.util.Iterator;
3import java.util.List;
4
5public class IteratorExample {
6 public static void main(String[] args) {
7 List<Integer> numbers = new ArrayList<>();
8 numbers.add(1);
9 numbers.add(2);
10 numbers.add(3);
11
12 Iterator<Integer> iterator = numbers.iterator();
13
14 while (iterator.hasNext()) {
15 Integer number = iterator.next();
16 System.out.println(number);
17 }
18 }
19}
1.3 迭代器的常见用法
-
遍历集合
1import java.util.ArrayList; 2import java.util.Iterator; 3import java.util.List; 4 5public class IteratorExample { 6 public static void main(String[] args) { 7 List<String> names = new ArrayList<>(); 8 names.add("Alice"); 9 names.add("Bob"); 10 names.add("Charlie"); 11 12 Iterator<String> iterator = names.iterator(); 13 14 while (iterator.hasNext()) { 15 String name = iterator.next(); 16 System.out.println(name); 17 } 18 } 19}
-
删除元素
1import java.util.ArrayList; 2import java.util.Iterator; 3import java.util.List; 4 5public class IteratorExample { 6 public static void main(String[] args) { 7 List<String> names = new ArrayList<>(); 8 names.add("Alice"); 9 names.add("Bob"); 10 names.add("Charlie"); 11 12 Iterator<String> iterator = names.iterator(); 13 14 while (iterator.hasNext()) { 15 String name = iterator.next(); 16 if (name.equals("Bob")) { 17 iterator.remove(); // 删除当前元素 18 } 19 } 20 21 System.out.println(names); // 输出: [Alice, Charlie] 22 } 23}
-
增强型 for 循环 增强型 for 循环实际上是使用迭代器的另一种形式,它更简洁且易于使用。
1import java.util.ArrayList; 2import java.util.List; 3 4public class EnhancedForLoopExample { 5 public static void main(String[] args) { 6 List<String> names = new ArrayList<>(); 7 names.add("Alice"); 8 names.add("Bob"); 9 names.add("Charlie"); 10 11 for (String name : names) { 12 System.out.println(name); 13 } 14 } 15}