数组和集合的遍历

104 阅读2分钟

标准遍历方法

数组:

package com.Test;

public class Main {
    public static void main(String[] args) {
        int[] arr={3,4,5,7,8,9,0};
        //1.用标准方法遍历
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

集合:

package com.Test;

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        //遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

注意:这种标准的遍历方式不能遍历Set系列集合

IDEA快捷生成

集合的(或者数组)的名字.fori 回车。

比如上面的代码:list.fori 然后回车。

增强for循环(开发最常用)

  • 底层就是迭代器,为了简化迭代器的书写出现的。

  • 底层就是一个 Iterator 迭代器。

  • 所有的单列集合和数组才能使用增强 for 循环遍历。

书写格式:

for(元素数据类型 变量名:数组或集合){
    
}

比如:

for(String s:list){
    System.out.println(s);
}

上面代码中的String s依次表示集合(或者数组)中的每一个数据。如果想在for循环里面使用集合(或者数组)里面的每一个数据,可以直接使用s就可以了,比如System.out.println(s);

数组:

package com.Test;

public class Main {
    public static void main(String[] args) {
        int[] arr={3,4,5,7,8,9,0};
        //2.增强for遍历
        for(int i:arr){
            System.out.println(i);
        }
    }
}

集合:

package com.Test;

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");

        //遍历
        for(String s:list){
            System.out.println(s);
        }
    }
}

IDEA快捷生成方法

集合的(或者数组)的名字.for 回车。

比如上面的代码:list.for 然后回车。

注意点

修改增强for中的变量,不会改变集合原本的数据。

package com.Test;

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        //遍历
        for (String s : list) {
            s="aaa";
        }
        //输出
        for (String s : list) {
            System.out.println(s);	//输出结果:zhangsan lisi wangwu
        }
    }
}

Lambda表达式遍历

更简单,更直接的遍历集合的方式。

list.forEach(s-> System.out.println(s));

代码示例:

package com.Test;
import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
    public static void main(String[] args) {
        /*
        Lambda表达式遍历方法:
        default void forEach(Consumer<?super T> action)
        */

        ArrayList<String> list=new ArrayList<>();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");

        //遍历
        list.forEach(s-> System.out.println(s));
    }
}

迭代器遍历

思想:先把集合中的元素导入到迭代器中。为什么这么做?暂时不知道,😄 想详细了解:黑马阿玮老师讲解Lambda

怎么导?

Iterator<String> s=list.iterator();iterator()list集合中的一个方法。

意思就是把list集合中的数据导入到新的集合Iterator<String> s中去。


在这里插入图片描述

代码示例:

package com.Test;
import java.util.ArrayList;
import java.util.Iterator;  //导入迭代器接口

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");

        //遍历
        Iterator<String> s=list.iterator();	//先把集合中的元素导入到迭代器中
        while(s.hasNext()){
            String str=s.next();
            System.out.println(str);
        }
    }
}