北京网站优化体验,ps做的网站,做微商必会的软件网站,宁波seo服务推广平台这是Java8系列的第二篇#xff0c;今天来说一下Java8中forEach的简单使用。我们使用对比的方式来看应该会看得更加清楚,更能理解#xff1a;一、遍历MapJava8之前的方式Map items new HashMap();items.put(A, 10);items.put(B, 20);items.p…这是Java8系列的第二篇今天来说一下Java8中forEach的简单使用。我们使用对比的方式来看应该会看得更加清楚,更能理解一、遍历MapJava8之前的方式Map items new HashMap();items.put(A, 10);items.put(B, 20);items.put(C, 30);items.put(D, 40);items.put(E, 50);items.put(F, 60);for (Map.Entry entry : items.entrySet()) {System.out.println(Item : entry.getKey() Count : entry.getValue());}forEach Lambda表达式Map items new HashMap();items.put(A, 10);items.put(B, 20);items.put(C, 30);items.put(D, 40);items.put(E, 50);items.put(F, 60);items.forEach((k,v)-System.out.println(Item : k Count : v));items.forEach((k,v)-{System.out.println(Item : k Count : v);if(E.equals(k)){System.out.println(Hello E);}});二遍历List:Java8之前的方式List items new ArrayList();items.add(A);items.add(B);items.add(C);items.add(D);items.add(E);for(String item : items){System.out.println(item);}forEach Lambda表达式List items new ArrayList();items.add(A);items.add(B);items.add(C);items.add(D);items.add(E);//输出A,B,C,D,Eitems.forEach(item-System.out.println(item));//输出 : Citems.forEach(item-{if(C.equals(item)){System.out.println(item);}});引入forEach Lambda表达式之后代码量确实减少了很多。System.out::print 是方法引用方法引用是当你想把一个方法当作一个“函数指针”传给别的方法用时有用的。例如说我有个ArrayList想把里面每个元素都打印出来每个元素一行。那么Java 8之前会这样写for (ElementType e : list) {System.out.println(e);}从Java 8开始使用ArrayList的新API加上lambda表达式我们可以这样写list.forEach(e - System.out.println(e));而这里的lambda表达式的内容其实只不过就是把参数传给了println()方法而没有做任何别的事情所以可以进一步简写为list.forEach(System.out::println);仅此而已。重点System.out是一个PrintStream实例的引用System.out::println 是对一个实例方法的引用该引用同时指定了对实例(System.out)的引用以及对方法(PrintStream::println)的引用System.out::println 不是 System.out.println 的等价物前者是一个方法引用表达式而后者不能单独作为一个表达式而必须在后面跟上由圆括号包围的参数列表来构成方法调用表达式。System.out::println 可以看作 lambda表达式 e - System.out.println(e) 的缩写形式。