java 8 foreach_Java 8 forEach 方法

本文详细介绍了Java 8中forEach方法的应用,涵盖了Iterable接口的使用、Stream流的forEach实例、List和Map的遍历,以及自定义Consumer操作。通过实例演示如何利用lambda表达式简化action创建。

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

1.Java 8 forEach 方法

下面代码段显示了Iterable接口中forEach方法。它是除Map外所用集合类都能使用的工具方法。default void forEach(Consumer super T> action) {

Objects.requireNonNull(action);

for (T t : this) {

action.accept(t);

}

}

这个方法会为每一个迭代元素执行action操作,直到结束或出现异常。

action是Consumer接口的实例,接收一个参数,无返回值。

创建自定义的action。这里的Object类型应该替换成集合或流元素的类型。Consumer action = new Consumer()

{

@Override

public void accept(Object t)

{

//perform action

}

};

2. Java 8 stream 的 forEach 实例

下面程序会遍历流的所有元素,并为每个元素执行action操作。这个例子会打印所有偶数。// stream for each

ArrayList numberList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

Consumer action = System.out::println;

numberList.stream().filter(n -> n % 2 == 0).forEach(action);

程序输出2

4

3. Java 8 List 的 forEach 实例

程序会遍历流的所有元素,并为每个元素执行action操作。这个例子只是简单的将元素在控制台打印出来。// list for each

ArrayList numberList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

Consumer action = System.out::println;

numberList.forEach(action);

程序输出1

2

3

4

5

4. Java 8 Map 的 forEach 实例

在Map中我们可以将map的entry、keys、values当作元素来遍历,并且执行action。// map for each

HashMap map = new HashMap<>();

map.put("A", 1);

map.put("B", 2);

map.put("C", 3);

// 1.map entries

Consumer> action = System.out::println;

map.entrySet().forEach(action);

// 2.map keys

Consumer actionOnKeys = System.out::println;

map.keySet().forEach(actionOnKeys);

// 3.map values

Consumer actionOnValues = System.out::println;

map.values().forEach(actionOnValues);

程序输出A=1

B=2

C=3

A

B

C

1

2

3

5. 创建自定义的 action

我们可以自定义自己的action方法,为集合中元素执行我们自己的逻辑。// create custom action

ArrayList numberList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

Consumer action = new Consumer() {

@Override

public void accept(Integer integer) {

integer = integer * 2;

System.out.println(integer);

}

};

numberList.forEach(action);

程序输出2

4

6

8

10

使用lambda表达式可以简化action的创建// create custom action with lambda

HashMap map = new HashMap<>();

map.put("A", 1);

map.put("B", 2);

map.put("C", 3);

Consumer> action = entry -> {

System.out.println("Key is :" + entry.getKey());

System.out.println("Value is :" + entry.getValue());

};

map.entrySet().forEach(action);

程序输出Key is :A

Value is :1

Key is :B

Value is :2

Key is :C

Value is :3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值