迭代器遍历,增强for遍历

目录

一.迭代器遍历

二.增强for遍历

三.Lambda表达式遍历


一.迭代器遍历

迭代器遍历:迭代器在Java中的类是Ilterator,迭代器是集合专用的遍历方式;

创建指针,判断是否有元素,获取元素,移动指针;

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

public class CollectionDemo2 {
    public static void main(String[] args) {
        //1.创建集合并添加元素
        Collection coll=new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        //2.获取迭代器对象
        //迭代器就好比是一个箭头,默认指向集合的0索引;
        Iterator it= coll.iterator();
        //3.利用循环不断地去获取集合的每一个元素
        while(it.hasNext()){
            while(it.hasNext()){
                String str=it.next();
                System.out.println(str);
            }
        }
    }
}

注意:

1.若当前位置没有元素,还要强行获取,报错NoSuchElementException;

System.out.println(it.next());

2.迭代器遍历完毕,指针不会复位;

System.out.println(it.hasNext());

3.循环只能用一次next方法;

//打印两遍和打印一遍输出结果一样;

4.迭代器遍历时,不能用集合的方法进行添加或者删除;

二.增强for遍历

  • 增强for的底层就是迭代器,为了简化迭代器的代码书写的;
  • 它是JDL5之后出现的,其内部原理就是一个Iterator迭代器;
  • 所有的单列集合和数组才能用增强for进行遍历;
  • 修改增强for中的变量,不会改变集合中原本的数据;

格式:

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

}

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

public class CollectionDemo3 {
    public static void main(String[] args) {
        //1.创建集合,添加元素;
        Collection coll=new ArrayList<>();
        coll.add("zhangsan");
        coll.add("lisi");
        coll.add("wangwu");

        //2.利用增强for进行遍历;
        //s:第三方变量,在循环中依次表示集合中每一个数据;
        for(String s:coll){
            System.out.println(s);
        }
    }
}

三.Lambda表达式遍历

得益于JDK8开始的新技术Lambda表达式,提供了一种更简单,更直接的遍历集合的方式;

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

public class CollectionDemo4 {
    public static void main(String[] args) {
        //1.创建集合并添加元素
        Collection coll = new ArrayList<>();
        coll.add("zhangsan");
        coll.add("lisi");
        coll.add("wangwu");
        //2.利用匿名内部类的形式
        //forEach底层原理:
        //
        /*coll.forEach(new Consumer() {
            @Override
            public void accept(String s) {
                System.out.println(s);

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

你可能感兴趣的:(java,开发语言)