美文网首页
forEach方法遍历集合

forEach方法遍历集合

作者: 啊肉怪 | 来源:发表于2019-04-17 19:58 被阅读0次

    旧API、新的forEach API进行遍历打印集合中的元素对比
    下面比较使用旧API、新的forEach API进行遍历打印集合中的元素:

    旧API需要获取集合的Iterator迭代器实例来进行遍历;
    新的API结合lambda表达式使用一行代码即可:myList.forEach(s -> {System.out.println("Iterator Value::"+s);});

    package com.spring.lambda;

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    /**

    • <pre>

    • Java8 的 forEach方法演示实例

    •  通过遍历打印集合元素比较 新旧方式的使用区别
      
    • </pre>
      */
      public class ForEachDemo {
      public static void main(String[] args) {
      List<Integer> myList = new ArrayList<Integer>();
      for(int i=0; i<3; i++) myList.add(i);

               System.out.println("<<<<<<<<Java8之前迭代方式start...>>>>>>>");
               Iterator<Integer> it = myList.iterator();
               while(it.hasNext()){
                   Integer i = it.next();
                   System.out.println("Iterator Value::"+i);
               }
      
               System.out.println("<<<<<<<<Java8之前迭代方式end.>>>>>>>");
               System.out.println("<<<<<<<<Java8使用forEach新迭代方式start...>>>>>>>");
               myList.forEach(s -> {System.out.println("Iterator Value::"+s);});
               System.out.println("<<<<<<<<Java8使用forEach新迭代方式end.>>>>>>>");
      

      }
      }

    两种方式得到的是一样的结果:
    <<<<<<<<Java8之前迭代方式start...>>>>>>>
    Iterator Value::0
    Iterator Value::1
    Iterator Value::2
    <<<<<<<<Java8之前迭代方式end.>>>>>>>
    <<<<<<<<Java8使用forEach新迭代方式start...>>>>>>>
    Iterator Value::0
    Iterator Value::1
    Iterator Value::2
    <<<<<<<<Java8使用forEach新迭代方式end.>>>>>>>

    JAVA8中forEach方法的详解
    forEach方法是JAVA8中在集合父接口java.lang.Iterable中新增的一个default实现方法:
    default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action);
    for (T t : this) {
    action.accept(t);
    }
    }

    forEach方法接受一个在JAVA8中新增的java.util.function.Consumer的消费行为 或者称之为动作 (Consumer action )类型;
    然后将集合中的每个元素作为消费行为的accept方法的参数执行;
    直到每个元素都处理完毕或者抛出异常即终止行为;
    除非指定了消费行为action 的实现,否则默认情况下是按迭代里面的元素顺序依次处理。

    自定义消费行为动作Consumer action

    首先,需要实现java.util.function.Consumer接口;
    再次,实现其accept方法

    需要了解的几个新的API 接口以及方法

    java.lang.Iterable#forEach
    java.util.function.Consumer#accept

    相关文章

      网友评论

          本文标题:forEach方法遍历集合

          本文链接:https://www.haomeiwen.com/subject/pzdowqtx.html