list的遍历方式

本文介绍了Java中遍历列表的多种方式,包括lambda、Iterator、ListIterator、Enumeration和foreach。对比了for、foreach和Iterator的区别,其中foreach适用于大小未知的集合,而Iterator则更强大,允许在遍历时修改或删除元素,尤其适合不同容器的通用遍历需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遍历方式:

lambda、Itrator、ListIterator、Enumeration、foreach

for、foreach、Iteractor三种遍历方式的区别:

  1. for比较适合实现可预知大小的集合或数组的遍历
  2. foreach该方式适用于Collection的所有子类,适合集合或数组大小未知的情况。foreach需要事先知道集合或数组类型。
  3. Iterator该方式适用于Collection的所有子类,适合集合大小未知的情况,不需要事先知道集合类型。(Iterator只能遍历集合)
  4. 总之,Iterator相比于for、foreach功能更加强大,他可以随时修改或者删除集合内部的元素,并且是在不需要知道元素和集合的类 型的情况下进行的,当你需要对不同的容器实现同样的遍历方式时,迭代器是最好的选择!

代码块

package com.example.demo.util;

import java.util.*;

public class TraverseList {
    public static void main(String[] args) {
        //1. 初始化list
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        //2. 遍历list几种方式
        System.out.println("\n方式一");
        lambda(list);

        System.out.println("\n方式二");
        foreach(list);

        System.out.println("\n方式三");
        forMethod(list);

        System.out.println("\n方式四");
        listIterator(list);

        System.out.println("\n方式五");
        iterator(list);

        System.out.println("\n方式六");
        enumeration();

        //3. 遍历List<Map>
        System.out.println("\n遍历List<Map>");
        listMap();

    }

    /**
     * lambda的循环遍历
     */
    public static void lambda(List<String> list){
        System.out.println("lambda forEach 第一种方式");
        list.stream().forEach(string -> {
            System.out.println(string);
        });

        System.out.println("lambda forEach 第二种方式");
        list.stream().forEach(System.out::println);

        System.out.println("lambda forEach 第三种方式");
        list.forEach((str)-> System.out.print(str+"\t"));

        System.out.println("lambda forEach 第四种方式");
        list.forEach(System.out::println);
    }

    /**
     * foreach 输出
     * 在JDK1.5版本之后开始提供的foreach迭代输出,他支持数组也支持集合输出。
     */
    public static void foreach(List<String> list){
        for (String str:list) {
            System.out.println(str + "\t");
        }
    }

    /**
     * 普通for循环遍历
     */
    public static void forMethod(List<String> list){
        for (int i = 0; i < list.size(); i++) {
            System.out.println(i + "\t");
        }
    }

    /**
     * Iterator 迭代输出
     * Iterator是专门的迭代输出接口,迭代输出就是依次判断每个元素,看是否有内容,若有内容则取出。
     */
    public static void iterator(List<String> list){
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next() + "\t");
        }
    }

    /**
     * ListIterator 双向迭代输出
     * ListIterator支持双向迭代输出,可以完成由前向后和由后向前输出。
     */
    public static void listIterator(List<String> list){
        ListIterator<String> listIterator = list.listIterator();
        System.out.println("从头到尾:");
        while(listIterator.hasNext()){
            System.out.println(listIterator.next() + "\t");
        }

        System.out.println("从尾到头:");
        while(listIterator.hasPrevious()){
            System.out.println(listIterator.previous() + "\t");
        }
    }

    /**
     * Enumeration 枚举输出
     * Enumeration是在早期推出的集合输出接口,该接口设置的主要目的是输出Vector集合。在JDK1.5后使用泛型重新进行接口定义。
     */
    public static void enumeration(){
        Vector<String> vector = new Vector<>();
        vector.add("aaa");
        vector.add("bbb");
        vector.add("ccc");

        Enumeration<String> enumeration = vector.elements();
        while(enumeration.hasMoreElements()){
            System.out.println(enumeration.nextElement() + "\t");
        }
    }

    public static void listMap(){
        //1. 初始化List<Map>
        List<Map> list = new ArrayList<>();
        Map<Integer,String> map1 = new HashMap<>();
        map1.put(1,"map1-value1");
        map1.put(2,"map1-value2");
        list.add(map1);
        Map<Integer,String> map2 = new HashMap<>();
        map2.put(1,"map2-value1");
        map2.put(2,"map2-value2");
        list.add(map2);
        Map<Integer,String> map3 = new HashMap<>();
        map3.put(1,"map3-value1");
        map3.put(2,"map3-value2");
        list.add(map3);

        //2. 遍历
        list.forEach(map -> {
            map.forEach((k,v) -> {
                System.out.println("k : " + k + " v : " + v);
            });
        });
    }
}

输出

方式一
lambda forEach 第一种方式
aaa
bbb
ccc
lambda forEach 第二种方式
aaa
bbb
ccc
lambda forEach 第三种方式
aaa	bbb	ccc	lambda forEach 第四种方式
aaa
bbb
ccc

方式二
aaa	
bbb	
ccc	

方式三
0	
1	
2	

方式四
从头到尾:
aaa	
bbb	
ccc	
从尾到头:
ccc	
bbb	
aaa	

方式五
aaa	
bbb	
ccc	

方式六
aaa	
bbb	
ccc	

遍历List<Map>
k : 1 v : map1-value1
k : 2 v : map1-value2
k : 1 v : map2-value1
k : 2 v : map2-value2
k : 1 v : map3-value1
k : 2 v : map3-value2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值