多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>[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); } } ~~~