package com.atguigu.java; import org.junit.Test; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * 集合元素的遍历操作,使用迭代器Iterator接口 * 1.内部的方法:hasNext() 和 next() * 2.集合对象每次都调用iterator()方法都得到一个全新的迭代器对象, * 默认游标都在集合的第一个元素之前。 * 3.内部定义了remove(),可以在遍历的时候,删除集合中的元素,不同于集合中的remove() * @author Suki * @creat 2022-09-28 22:13 */ public class IteratorTest { @Test public void test1(){ Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); //方式一: Iterator iterator = coll.iterator(); System.out.println(iterator.next()); System.out.println(iterator.next()); System.out.println(iterator.next()); System.out.println(iterator.next()); // 报异常: NoSuchElementException System.out.println(iterator.next()); //方式二:不推荐 for (int i = 0; i < coll.size(); i++) { System.out.println(iterator.next()); } //方式三:推荐 //hasNext():判断是否还有下一个元素 while(iterator.hasNext()){ //next():①指针下移 ②将下移以后集合位置上的元素返回 System.out.println(iterator.next()); } //错误方式一: // Iterator iterator1 = coll.iterator(); // while (iterator1.next() != null){ // System.out.println(iterator1.next()); // } //错误方式二: // while (coll.iterator().hasNext()){ // System.out.println(coll.iterator().next()); // } } @Test public void test2(){ Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); //删除集合中的"Tom" Iterator iterator = coll.iterator(); while(iterator.hasNext()){ Object obj = iterator.next(); if("Tom".equals(obj)){ iterator.remove(); } } //错误:此时指针已经到最后,iterator.hasNext()为false while (iterator.hasNext()){ System.out.println(iterator.next()); }