学科分类
目录
Java基础

JDK8—foreach遍历集合

在JDK 8中,根据Lambda表达式特性还新增了一个forEach(Consumer action)方法来遍历集合,该方法所需要的参数是一个函数式接口。接下来通过一个案例来演示如何使用forEach(Consumer action)遍历集合对象,如文件1所示。

文件1 Example07.java

 1    import java.util.ArrayList;
 2    public class Example07 {
 3        public static void main(String[] args) {
 4            ArrayList list = new ArrayList();
 5            list.add("data_1");
 6            list.add("data_2");
 7            list.add("data_3");
 8            System.out.println(list);
 9            // 使用JDK 8新增的forEach(Consumer action)方法遍历集合
 10            list.forEach(obj -> System.out.println("迭代集合元素:"+obj));
 11        }
 12    }

运行结果如图1所示。

图1 运行结果

文件1中,首先创建了一个集合对象并调用add()方法向集合添加三个元素,接着打印该集合信息,然后使用forEach(Consumer action)方法对集合中的元素进行遍历,该方法传递的是一个Lambda表达式形式书写的函数式接口。forEach(Consumer action)方法在执行时,会自动遍历集合元素并将元素逐个传递给Lambda表达式的形参。

JDK 8中除了针对所有集合类型对象新增了一个forEach(Consumer action)方法来遍历集合外,还针对Iterator迭代器对象提供了一个forEachRemaining(Consumer action)方法来进行遍历,该方法同样需要一个函数式接口。接下来通过一个案例来演示如何使用forEachRemaining(Consumer action)方法遍历Iterator接口元素,如文件2所示。

文件2 Example08.java

 1    import java.util.ArrayList;
 2    import java.util.Iterator;
 3    public class Example08 {
 4        public static void main(String[] args) {
 5            ArrayList list = new ArrayList();
 6            list.add("data_1");
 7            list.add("data_2");
 8            list.add("data_3");
 9            System.out.println(list);
 10            // 将集合转换为Iterator迭代器对象
 11            Iterator it = list.iterator();
 12            // 使用JDK 8新增的forEachRemaining(Consumer action)来遍历迭代器对象
 13           it.forEachRemaining(obj -> System.out.println("迭代集合元素:"+obj));
 14        }
 15    }

运行结果如图2所示。

图2 运行结果

同文件1对比可以看出,文件2中只是将集合对象转换为Iterator迭代器对象,然后使用forEachRemaining(Consumer action)方法对集合中的元素进行遍历,而从程序运行结果看出,两种集合遍历方式得到的结果完全相同,都能够正确遍历出集合元素。

小提示:

在本小节List集合遍历中,讲解了List集合遍历的三种主要方法,这些方法都可以用来对单例集合Collection进行遍历,包括List集合以及后面将要讲解的Set集合。

点击此处
隐藏目录