集合遍历
集合遍历
传统的for循环遍历,基于计数器的:
遍历者自己在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到最后一个元素后,停止。主要就是需要按元素的位置来读取元素。这也是最原始的集合遍历方法。
for (int i = 0; i < list.size(); i++) {
list.get(i);
}
迭代器遍历,Iterator:
Iterator本来是OO的一个设计模式,主要目的就是屏蔽不同数据集合的特点,统一遍历集合的接口。Java作为一个OO语言,自然也在Collections中支持了Iterator模式。
写法为:
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
iterator.next();
}
for each循环遍历:
屏蔽了显式声明的Iterator和计数器。
优点:代码简洁,不易出错。
缺点:只能做简单的遍历,不能在遍历过程中操作(删除、替换)数据集合。
写法为:
for (ElementType element : list) {
}
Stream流处理
创建 Stream:
- 从集合创建:
List<String> list = Arrays.asList("a", "b", "c"); Stream<String> stream = list.stream();
- 从数组创建:
int[] numbers = {1, 2, 3, 4}; IntStream stream = Arrays.stream(numbers);
- 从值创建:
Stream.of("a", "b", "c")
使用示例:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long sum = numbers.stream() // 创建流
.filter(n -> n % 2 == 0) // 过滤出偶数
.mapToInt(Integer::intValue) // 转换为int流
.sum(); // 求和