0
点赞
收藏
分享

微信扫一扫

【Java笔记】Iterator与foreach循环遍历集合

zibianqu 2022-04-14 阅读 88

目录

Iterator迭代器

foreach循环 

有关foreach的面试题


Iterator迭代器

Iterator 对象称为迭代器,主要用于遍历 Collection 集合中的元素

Iterator 仅用于遍历集合,其本身不提供承装对象的能力。如果需要创建 Iterator 对象,则必须有一个被迭代的集合

内部方法:hasNext()和 next()

import org.junit.Test;
import java.util.*;

public class CollectionTest {
    @Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add("AA");
        coll.add(123);
        coll.add(false);
        coll.add("DD");
        Iterator iterator = coll.iterator();
//        for (int i = 0; i < coll.size(); i++) {
//            System.out.println(iterator.next());
//        }
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

>>> AA
    123
    false
    DD

foreach循环 

JDK 5.0 新增了 foreach 循环,用于遍历集合、数组

import org.junit.Test;
import java.util.*;

public class CollectionTest {
    @Test
    public void test1() {
        Collection coll = new ArrayList();
        coll.add("AA");
        coll.add(123);
        coll.add(false);
        coll.add("DD");
        Iterator iterator = coll.iterator();
        //for(集合元素的类型 局部变量 : 集合对象) 内部仍然使用了迭代器
        for(Object obj : coll){
            System.out.println(obj);
        }
        System.out.println("**********");
        int[] arr = new int[]{1,2,3,4,5};
        //for(数组元素的类型 局部变量 : 数组对象)
        for (int i : arr){
            System.out.println(i);
        }
    }
}

>>> AA
    123
    false
    DD
    **********
    1
    2
    3
    4
    5

有关foreach的面试题

import org.junit.Test;

public class foreachTest {
    @Test
    public void test(){
        String[] arr = new String[]{"AA","AA","AA"};
        for (String s : arr){
            s = "BB";
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

>>> AA
    AA
    AA

为什么没有都赋值为 “BB” 呢,是因为这时相当于把 arr [i] 赋值给 s,然后 s = “BB”,我们只修改了 s 的值,并没有对 arr [i] 做操作,所以集合的值并没有改变

举报

相关推荐

0 条评论