【JavaSE基础】集合进阶部分---迭代器

文章介绍了在Java中如何遍历集合,包括使用迭代器的方式,详细阐述了迭代器的使用细节,如异常处理和指针状态。接着讨论了增强for循环的便利性和其特性,以及如何通过lambda表达式进行集合遍历,展示了匿名内部类和lambda表达式的用法。
摘要由CSDN通过智能技术生成

集合进阶—Collection遍历

1.迭代器遍历

package JavaSE.集合进阶.test01;

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

public class Test {
    public static void main(String[] args) {

        //迭代器遍历集合的方法:
        //1.创建集合添加元素
        Collection<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        //2.获取迭代器对象
        Iterator<String> it = list.iterator();
        //3.循环判断当前位置是否有元素
        while(it.hasNext()){
            //4.获取元素并向后移动指针
            String str = it.next();
            System.out.print(str+" ");
        }

        // 迭代器的细节注意:
        //1.报错NoSuchElementException:循环结束,迭代器指针指向最后无元素的位置
        System.out.println(it.next());//NoSuchElementException
        //2.迭代器遍历完,指针不会复位
        System.out.println(it.hasNext());//false
        System.out.println(it.hasNext());//false
        //3.遍历第二次需要获取新的迭代器对象
        Iterator<String> it2 = list.iterator();
        while(it2.hasNext()){
            String str = it2.next();
            System.out.print(str+" ");
        }
        //4.迭代器遍历时不可使用集合方法删除和增加元素
        Iterator<String> it3 = list.iterator();
        while(it2.hasNext()){
            String str = it2.next();
            //迭代器remove方法删除
            if("1".equals(str)) it3.remove();
            System.out.print(str+" ");
        }
    }
}

2.增强for遍历

package JavaSE.集合进阶.test02;

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

public class Test {
    public static void main(String[] args) {
        /*
        增强for遍历格式:
            for(数据类型 变量名:集合/数组){

            }

         快速生成方式:数组/集合.for

         增强for的细节:
         -->修改增强for中的变量,不会改变集合中原本的数据
         */

        Collection<String> list = new ArrayList<>();
        list.add("qqq");
        list.add("www");
        list.add("eee");
        //s本质为中间变量,遍历时分别代表集合中的一个数据
        for (String s : list) {
            s= "111";
            System.out.println(s);
        }
        System.out.println(list);
    }
}

3.lambda表达式遍历

package JavaSE.集合进阶.test03;

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class Test {
    public static void main(String[] args) {

        /*
        lambda表达式遍历:
            default void forEach(Consumer<? super T> action)
         */

        Collection<String> list = new ArrayList<>();
        list.add("qqq");
        list.add("www");
        list.add("eee");

        //匿名内部类
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        //lambda表达式
        list.forEach(s-> System.out.println(s));

    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值