Java基础 第三节 第七课
【摘要】
Iterator 迭代器
Iterator 接口概述迭代的概念常用方法代码展示
迭代器的实现原理增强 for练习
Iterator 接口
在程序开发中, 经常需要遍历集合中的所有元...
Iterator 接口
在程序开发中, 经常需要遍历集合中的所有元素. 针对这种需求, JDK 专门提供了一个接口java.util.Iterator
.
概述
Iterator 接口也是 Java 集合中的一员. 但它与 Collection, Map 接口有所不同. Collection 接口与 Map 接口主要用于存储元素, 而 Iterator 主要用于迭代访问 (即遍历) Collection 中的元素. 因此 Iterator 对象也被称为迭代器.
想要遍历 Collection 集合, 那么就要获取该集合迭代器完成迭代操作. 下面介绍一下获取携带器的方法.
publicIterator iterator():
获取集合对象的迭代器, 用来遍历集合中的元素,
迭代的概念
迭代: 即 Collection 集合元素的通用获取方式.
在取元素之前先要判断集合中有没有元素. 如果有, 就把这个元素取出来, 再继续判断, 如果还有就再取出来. 一直把集合中的所有元素全部取出. 这种取出方式专业术语称为迭代.
常用方法
Iterator 接口的常用方法如下:
publicE next()
: 返回迭代的下一个元素publicboolean hasNext()
: 如果仍有元素可以迭代, 则返回 true
代码展示
import java.util.Collection;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
// 使用多态创建对象
Collection<String> collection = new ArrayList<>();
// 添加元素到集合
collection.add("littlewhite");
collection.add("middlewhite");
collection.add("bigwhite");
// 使用迭代器变量
// 获得迭代器对象
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()){ // 判断是否有迭代元素
String temp = iterator.next(); // 获取迭代出的元素
System.out.println(temp);
}
}
}
输出结果:
littlewhite
middlewhite
bigwhite
迭代器的实现原理
当遍历集合时:
- 首先通过调用集合的 Iterator() 方法获得迭代器对象
- 然后使用 hashNext() 方法判断集合中是否存在下一个元素
- 如果存在, 则调用 next() 方法将元素取出. 否则说明已到达了集合末尾, 停止遍历元素.
Iterator 迭代器对象在遍历集合时, 内部采用指针的方法来跟踪集合中的元素:
- 在使用 Iterator 的 next 方法之前, 迭代器的索引位于第一个元素之前, 不指向任何元素
- 当第一次调用迭代器的 next 方法后, 迭代器的索引会向后移动一位, 指向第一个元素并将该元素返回
- 当再次调用 next 方法时, 迭代器的索引会指向第二个元素并将该元素返回
- 以此类推, 直到 hasNext 方法返回 flase, 表示到达了集合的末尾, 终止对元素的遍历
增强 for
增强 for 循环 (也称 for each 循环) 是 JDK1.5 以后出来的一个高级 for 循环, 专门用来遍历数组和集合的.
它的内部原理其实是个 Iterator 迭代器. 所以在遍历的过程中, 不能对集合中的元素进行增删操作.
格式:
for(元素的数据类型 变量 : Collection 集合 or 数组){
//写操作代码
}
增强循环用于遍历 Collection 和数组. 通常只进行遍历元素, 不要在遍历的过程中对集合元素进行增删操作.
练习
练习 1: 遍历数组
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3};
// 使用增强for遍历数组
for(int temp : array){
// temp 代表数组中的每个元素
System.out.println(temp);
}
}
}
输出结果:
1
2
3
练习 2: 遍历集合
import java.util.ArrayList;
import java.util.Collection;
public class Test27 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("littlewhite");
collection.add("middlewhite");
collection.add("bigwhite");
// 使用增强for遍历
for(String temp : collection){
System.out.println(temp);
}
}
}
输出结果:
littlewhite
middlewhite
bigwhite
注: 新 for 循环必须有被遍历的目标. 目标只能是 Collection 或者是数组. 新式 for 仅仅作为遍历操作出现.
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/110255505
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)