IteratorTest

package com.klvchen.java2;

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()
 */
public class IteratorTest {

    //iterator(): 返回Iterator接口的实例,用于遍历集合元素
    @Test
    public void test1(){
        Collection col1 = new ArrayList();
        col1.add(123);
        col1.add(456);
        col1.add(new Person("Jerry", 20));
        col1.add(new String("Tom"));
        col1.add(false);

        Iterator iterator = col1.iterator();

        //方式一
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
        //报异常:java.util.NoSuchElementException
//        System.out.println(iterator.next());

        //方式二:不推荐
//        for (int i = 0; i < col1.size(); i++){
//            System.out.println(iterator.next());
//        }

        //方式三:推荐
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

    @Test
    public void test2(){
        Collection col1 = new ArrayList();
        col1.add(123);
        col1.add(456);
        col1.add(new Person("Jerry", 20));
        col1.add(new String("Tom"));
        col1.add(false);

        //删除集合中"Tom"
        Iterator iterator = col1.iterator();
        while (iterator.hasNext()){
            Object obj = iterator.next();
            if ("Tom".equals(obj)){
                iterator.remove();
            }
        }
        //遍历集合
        iterator = col1.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

}

ForTest.java

package com.klvchen.java;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;

public class ForTest {

    @Test
    public void test1(){
        Collection col1 = new ArrayList();
        col1.add(123);
        col1.add(456);
        col1.add(new Person("Jerry", 20));
        col1.add(new String("Tom"));
        col1.add(false);

        //for(集合元素的类型 局部变量 : 集合对象)
        //内部仍然调用了迭代器
        for(Object obj : col1){
            System.out.println(obj);
        }
    }

    @Test
    public void test2(){
        int[] arr = new int[]{1, 2, 3, 4, 5, 6};
        //for(数组元素的类型 局部变量 : 数组对象)
        for (int i : arr){
            System.out.println(i);
        }
    }

    //练习题
    @Test
    public void test3(){
        String[] arr = new String[]{"MM", "MM", "MM"};

        //方式一:
        //for (int i = 0; i < arr.length; i++){
        //    arr[i] = "GG";
        //}

        //方式二: 增强for循环
        for (String s : arr){
            s = "GG";
        }

        for (int i = 0; i< arr.length; i++){
            System.out.println(arr[i]);
        }
    }

}