Java8新特性之forEach+Lambda 表达式遍历Map和List

本文通过实例对比了Java8之前与Java8中使用forEach结合Lambda表达式遍历Map和List的不同方式,展示了新特性带来的代码简化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是Java8系列的第二篇,今天来说一下Java8中forEach的简单使用。我们使用对比的方式来看应该会看得更加清楚,更能理解:
一、遍历Map

============Java8之前的方式==========
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());
}
============forEach + Lambda表达式==========
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");
    }
});

二遍历List:
============Java8之前的方式==========

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);
}
============forEach + Lambda表达式==========
List<String> items = new ArrayList<>();
items.add("A");
items.add("B");
items.add("C");
items.add("D");
items.add("E");
//输出:A,B,C,D,E
items.forEach(item->System.out.println(item));
//输出 : C
items.forEach(item->{
    if("C".equals(item)){
        System.out.println(item);
    }
});

引入forEach + Lambda表达式之后,代码量确实减少了很多。

### Java 中使用 Lambda 表达式遍历集合 在 Java 中,`Stream API` 提供了一种简洁的方式利用 lambda 表达式来处理集合数据。下面展示了如何使用 `forEach` 方法配合 lambda 来迭代列表中的元素。 ```java import java.util.Arrays; import java.util.List; public class LambdaTraversal { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); // 使用 forEach lambda 表达式打印每个名字 names.forEach(name -> System.out.println(name)); // 或者更简单的形式 names.forEach(System.out::println); } } ``` 这段代码创建了一个字符串列表并使用了两种不同的方式来展示其中的内容:一种是指定完整的 lambda 函数体;另一种则是采用方法引用的形式[^3]。 ### Python 中使用 Lambda 表达式遍历集合 Python 的内置函数如 `map()` 可以接受一个 lambda 函数作为第一个参数,并将其应用于给定序列的每一个项上: ```python names = ["alice", "bob", "charlie"] # 使用 map 结合 lambda 遍历并转换所有名称为大写 upper_names = list(map(lambda name: name.upper(), names)) print(upper_names) # 同样效果也可以用列表推导式实现 upper_names_comprehension = [name.upper() for name in names] print(upper_names_comprehension) ``` 这里不仅给出了基于 lambda 的解决方案,还提供了一个更加 pythonic 的替代方案——列表解析[^1]。 ### C# 中使用 Lambda 表达式遍历集合 对于 C# 而言,在 LINQ 查询中经常可以看到 lambda 表达式的身影。以下是通过 `foreach` 循环以及 lambda 进行操作的例子: ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { var numbers = new List<int>{ 1, 2, 3 }; // 利用 foreach 枚举器遍历集合 foreach (var number in numbers){ Console.WriteLine(number); } // 使用 LINQ lambda 表达式筛选偶数并输出它们 numbers.Where(n => n % 2 == 0).ToList().ForEach(Console.WriteLine); } } ``` 此片段先定义了一个整型列表,接着分别演示了传统循环结构结合了 lambda 的查询语句两种不同风格下的遍历逻辑.
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值