


package com.atguigu.java1;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 Dxkstart * @create 2021-05-19 15:30 */public class IteratorTest {    @Test    public void test() {        Collection coll = new ArrayList();        coll.add("AA");        coll.add(123);        coll.add(new String("Tom"));        coll.add(new Person("Jerry", 20));        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());        //方式二:不推荐//        for(int i = 0;i<coll.size();i++){//            System.out.println(iterator.next());//        }        //方式三:推荐        while (iterator.hasNext()) {            //next():①指针下移 ②将下移以后集合位置上的元素返回            System.out.println(iterator.next());        }    }    @Test    public void test2() {        Collection coll = new ArrayList();        coll.add("AA");        coll.add(123);        coll.add(new String("Tom"));        coll.add(new Person("Jerry", 20));        coll.add(false);        //错误方式一:        Iterator iterator = coll.iterator();//        while((iterator.next()) != null){//            System.out.println(iterator.next());//        }        //错误方式三:        //集合对象每次调用iterator()方法都得到一个全新的迭代器对象,        // 默认游标都在集合的第一个元素之前。//        while(coll.iterator().hasNext()){//            System.out.println(coll.iterator().next());//        }    }    //测试Iterator中的remove()    @Test    public void test3() {        Collection coll = new ArrayList();        coll.add("AA");        coll.add(123);        coll.add(new String("Tom"));        coll.add(new Person("Jerry", 20));        coll.add(false);        //删除集合中的"Tom"        Iterator iterator = coll.iterator();        while(iterator.hasNext()){            Object obj = iterator.next();            if("Tom".equals(obj)){                iterator.remove();            }        }        System.out.println("****");        iterator= coll.iterator();        while (iterator.hasNext()){            System.out.println(iterator.next());        }    }}

package com.atguigu.java1;import org.junit.Test;import java.util.ArrayList;import java.util.Collection;/** * JDK 5.0 新增了foreach循环,用于遍历集合、数组 * * @author Dxkstart * @create 2021-05-19 17:08 */public class ForTest {    @Test    public void test1(){        Collection coll = new ArrayList();        coll.add("AA");        coll.add(123);        coll.add(new String("Tom"));        coll.add(new Person("Jerry", 20));        coll.add(false);        //for(集合元素的类型  局部变量 :集合对象)        //内部仍然调用了迭代器。        for(Object obj : coll){            System.out.println(obj);        }    }    @Test    public void test2(){        int[] arr = new int[]{1,2,3,4,5,6,7};        //for(数组元素的类型  局部变量 :数组对象)//        for(Object obj){        for(int i  : arr){            System.out.println(i);        }    }    //练习题    @Test    public void test3(){        String[] arr = {"MM", "MM", "MM", "MM", "MM"};//        //方式一:普通for赋值//        for(int i = 0;i<arr.length;i++){//            arr[i] = "GG";//        }////        for(int i = 0;i<arr.length;i++){//            System.out.println(arr[i]);//"GG"//        }        //方式二:增强for赋值        for(String str : arr){            str = "GG";        }        for(String str : arr){            System.out.println(str);//"MM"        }    }}