>[success] # Iterator接口
1. `java.util.Iterator`接口主要用于描述迭代器对象,可以遍历Collection集合中的所有元素
2. `java.util.Collection`接口继承**Iterator**接口,因此所有实现**Collection**接口的实现类都可以使用**该迭代器对象**
>[danger] ##### 常用的方法
| 方法声明 | 功能介绍|
| --|--|
| boolean hasNext()| 判断集合中是否有可以迭代/访问的元素|
| E next() |用于取出一个元素并指向下一个元素|
| void remove() |用于删除访问到的最后一个元素|
>[danger] ##### 案例
~~~
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
Collection arr = new ArrayList();
arr.add(1);
arr.add(12);
arr.add("122");
Iterator iterator1 = arr.iterator();
// 1. hasNext 判断是否有元素可以访问
System.out.println(iterator1.hasNext()); // true
// 2. next 取出一个元素并指向下一个
System.out.println("获取到的元素是:" + iterator1.next()); // 获取到的元素是:1
System.out.println("获取到的元素是:" + iterator1.next()); // 获取到的元素是:12
System.out.println("获取到的元素是:" + iterator1.next()); // 获取到的元素是:122
// 3. hasNext 判断是否有元素可以访问,此时都取出完毕了没有元素了
System.out.println(iterator1.hasNext()); // false
// 4. 没有元素在强制取元素 会报错
// System.out.println("获取到的元素是:" + iterator1.next()); //
// 编译ok,运行发生NoSuchElementException没有这样的元素异常
// 5.不能对正在被遍历的集合进行改变(add,remove,clear等操作),但是可以调用iterator中的remove方法进行删除
arr = new ArrayList();
arr.add(1);
arr.add(12);
arr.add("122");
Iterator iterator2 = arr.iterator();
while (iterator2.hasNext()) {
if (iterator2.next().equals(12)) {
iterator2.remove();
//arr.remove(obj); // 使用集合的remove方法编译ok,运行发生ConcurrentModificationException并发修改异常,搜索手册可查看更具体详情
}
}
System.out.println(arr); // [1, 122]
// 6.利用迭代器循环便利所有值
iterator2 = arr.iterator();
while (iterator2.hasNext()) {
System.out.println(iterator2.next()); // 1 122
}
}
}
~~~
>[danger] ##### 迭代器实现 toString
~~~
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
Collection arr = new ArrayList();
arr.add(1);
arr.add(12);
arr.add("122");
Iterator iterator1 = arr.iterator();
// 迭代器实现toString
// 1. 声明一个String
StringBuffer str = new StringBuffer();
str.append('[');
while (iterator1.hasNext()) {
Object obj = iterator1.next();
if (iterator1.hasNext()) {
str.append(obj).append(',');
} else {
// 没有说明已经是最后一个元素了
str.append(obj).append(']');
}
}
System.out.print(str);
}
}
~~~
- windows -- 环境变量
- Vscode -- 编写java
- 初始java
- java -- 关键字
- 编写第一个java程序
- java -- 注释
- 计算机存储 -- 进制
- java -- 类型
- java -- 变量
- 数字类型
- 布尔类型
- 字符类型
- 类型转换
- 双等比较是什么
- java -- 运算符
- 算数运算符
- 字符串拼接
- 关系/比较运算符
- 自增减运算符
- 逻辑运算符
- 三目运算
- 赋值运算符
- 移位运算符
- 位运算符
- 运算符优先级
- java -- 流程控制语句
- if /else if /if -- 判断
- switch case分支结构
- for -- 循环
- 用双重for循环
- while -- 循环
- do while -- 循环
- 案例练习
- java -- 数组
- 数组的存储
- 数组的增删改查
- 数组的特点
- 数组案例
- 二维数组
- 数组的工具方法
- java -- 方法
- java -- 方法的重载
- java -- 方法的调用流程
- java -- 类方法传参注意事项
- java -- 方法练习案例
- 对比 return break continue
- for each循环
- java -- 基础练习
- java -- 面向对象
- java -- 创建类和对象
- java -- 访问控制符
- java -- 类成员方法
- java -- 构造方法
- java -- this
- java -- 封装
- java -- 对象内存图
- java -- 创建对象案例
- java -- static
- java -- 继承
- super -- 关键字
- java -- 构造块和静态代码块
- java -- 重写
- java -- final
- java -- 多态
- java -- 抽象类
- java -- 接口
- 引用类型数据转换
- 综合案例
- java -- 内部类
- java -- 回调模式
- java -- 枚举类型
- java -- switch 使用枚举
- java -- 枚举方法使用
- java -- 枚举类实现接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 递归练习
- java -- 设计模式
- 单例模式
- java -- 注解
- java -- 元注解
- Java -- 核心类库
- java -- 处理字符串
- Java -- String
- String -- 常用方法
- String -- 正则
- Java -- StringBuilder 和 StringBuffer
- 知识点
- Java -- StringJoiner 字符串拼接
- 练习题
- 字符串的总结
- Java -- 包装类
- Integer
- Double
- Boolean
- Character
- java -- 集合类
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 获取当前时间戳
- Java -- 异常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法