Java8 Foreach操作

在这篇文章中我将向你演示如何使用Java8中的foreach操作ListMap

1. Foreach操作Map

1.1 正常方式遍历Map

Map<String, Integer> 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<String, Integer> entry : items.entrySet()) {
    System.out.println("Item : " + entry.getKey() + " Count : " + entry.getValue());
}

1.2 使用Java8的foreach+lambda表达式遍历Map

Map<String, Integer> 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");
    }
});

2. Foreach操作List

2.1 普通方式循环List

List<String> 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);
}

2.2 在Java8中使用foreach+lambda表达式遍历List

List<String> items = new ArrayList<>();
items.add("A");
items.add("B");
items.add("C");
items.add("D");
items.add("E");

//lambda
//Output : A,B,C,D,E
items.forEach(item->System.out.println(item));

//Output : C
items.forEach(item->{
    if("C".equals(item)){
        System.out.println(item);
    }
});

//method reference
//Output : A,B,C,D,E
items.forEach(System.out::println);

//Steam and filter
//Output : B
items.stream()
    .filter(s->s.contains("B"))
    .forEach(System.out::println);

参考资料:

  1. Java 8 Iterable forEach JavaDoc
  2. Java 8 forEach JavaDoc

欢迎star开源web框架Blade:http://github.com/biezhi/blade

时间: 2024-10-01 12:18:36

Java8 Foreach操作的相关文章

使用 foreach 操作数组

使用 foreach 操作数组 foreach 并不是 Java 中的关键字,是 for 语句的特殊简化版本,在遍历数组.集合时, foreach 更简单便捷.从英文字面意思理解 foreach 也就是" for 每一个"的意思,那么到底怎么使用 foreach 语句呢? 语法: 我们分别使用 for 和 foreach 语句来遍历数组 运行结果: 看到 foreach 的方便了吧!! 留个思考问题给大家:如果想在 foreach 语句中获取数组元素的下标,该如何做呢?? 任务 在编辑

深入理解java中for和foreach循环_java

•for循环中的循环条件中的变量只求一次值!具体看最后的图片 •foreach语句是java5新增,在遍历数组.集合的时候,foreach拥有不错的性能. •foreach是for语句的简化,但是foreach并不能替代for循环.可以这么说,任何foreach都能改写为for循环,但是反之则行不通. •foreach不是java中的关键字.foreach的循环对象一般是一个集合,List.ArrayList.LinkedList.Vector.数组等. •foreach的格式: for(元素类

浅析Java 8的聚合操作

Oracle在2014年3月19日如期发布了Java 8.Java 8版本被认为是具有里程碑意义的一个版本,Oracle在该版本中添加了许多新特性,包括Lambda表达式.方法引用.加强了安全等等. 在众多的新特性中,聚合操作(Aggregate Operations)是针对集合类的一个比较大的变化.通过聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找.遍历.过滤以及常见计算等. 聚合操作与Java 8中的Lambda表达式.方法引用等新特性是相关的,一般一起组合

java中for和foreach速度到底谁更优,速度是和JDK版本有关吗?

问题描述 这个麻烦的东西,有人说for快有人说foreach快,有人说foreach操作list比for快,或者和jdk版本有关,网上各种说法都有,求解. 解决方案 for和foreach的用法区别for可以不逐个遍历,比如每隔一个遍历一个,也可以从前向后遍历,从后向前,但是foreach不能从后向前遍历,只能从前向后,并且foreach只能逐个遍历.在foreach中不能向迭代变量赋值.for循环有条件判断,可以限制执行条件.foreach没有.对集合对象的遍历,foreach更常用.建议如果

PHP中使用foreach和引用导致程序BUG的问题介绍

foreach 循环实例用法 在PHP中的foreach是用来进行循环对一个数组的所有元素.作者的foreach基本语法如下:  代码如下 复制代码 FOREACH ($array_variable as $value) {   [code to execute] } or FOREACH ($array_variable as $key => $value) {   [code to execute] } 在这两种情况下,多次[代码执行]将被处死是等于在$ array_variable数组元素

java-基础-foreach与正常for循环效率对比

直接for循环效率最高,其次是迭代器和 ForEach操作. 作为语法糖,其实 ForEach 编译成 字节码之后,使用的是迭代器实现的,反编译后,testForEach方法如下: public static void testForEach(List list) { for (Iterator iterator = list.iterator(); iterator.hasNext();) { Object t = iterator.next(); Object obj = t; } } 可以

java中lambda表达式简单用例_java

我对java中lambda表达式的看法是相当纠结的: 一个我这么想:lambda表达式降低了java程序的阅读体验.java程序一直不以表现力出众,正相反使Java流行的一个因素正是它的安全和保守--即使是初学者只要注意些也能写出健壮且容易维护的代码来.lambda表达式对开发人员的要求相对来说高了一层,因此也增加了一些维护难度. 另一个我这么想:作为一个码代码的,有必要学习并接受语言的新特性.如果只是因为它的阅读体验差就放弃它在表现力方面的长处,那么即使是三目表达式也有人觉得理解起来困难呢.语

Spork: Pig on Spark实现分析

介绍 Spork是Pig on Spark的highly experimental版本,依赖的版本也比较久,如之前文章里所说,目前我把Spork维护在自己的github上:flare-spork. 本文分析的是Spork的实现方式和具体内容. Spark Launcher 在hadoop executionengine包路径下,写了一个Spark启动器,同MapReduceLauncher类似,会在launchPig的时候,把传入的物理执行计划进行翻译. MR启动器翻译的是MR的操作,以及进一步

php数组遍历

1, B=>1, C=>1, D=>1); foreach($array as $key => $value){ if($key == B){ $array[A] = CHANGE; $array[D] = CHANGE; print_r($array); echo ' '; } //如果想要打印CHNAGE,那么可以使用 //if($array[$key] == 'CHANGE') //上面的取出的才是数组实际元素的值,使用$value取出的是array数组的原始值的副本 if(