jdk8中forEach参数
时间: 2023-07-03 08:06:43 浏览: 103
在JDK8中,forEach方法有两个重载形式:
1. forEach(Consumer<? super T> action)
该方法接受一个Consumer类型的参数action,它代表了一个需要执行的操作。对于集合中的每一个元素,都将调用action.accept方法,将元素作为参数传递给该方法。
例如,以下代码将打印list中的每个元素:
```
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(item -> System.out.println(item));
```
2. void forEach(BiConsumer<? super K,? super V> action)
该方法接受一个BiConsumer类型的参数action,它代表了一个需要执行的操作。对于Map中的每一个键值对,都将调用action.accept方法,并将键和值作为参数传递给该方法。
例如,以下代码将打印map中的每个键值对:
```
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
map.forEach((key, value) -> System.out.println(key + " = " + value));
```
相关问题
jdk8中使用forEach
在 JDK8 中,可以使用 `forEach` 方法来遍历集合中的元素。这个方法是定义在 `java.util.Collection` 接口中的默认方法,因此可以在任何实现了该接口的集合类中使用。
例如,假设有一个 `List` 集合,可以使用以下代码来遍历其中的元素并打印出来:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(System.out::println);
```
这里使用了方法引用 `System.out::println`,表示将集合中的每个元素作为参数传递给 `println` 方法。也可以使用 Lambda 表达式来实现同样的效果:
```java
list.forEach(item -> System.out.println(item));
```
另外,如果需要在遍历过程中对集合中的元素进行修改,可以使用 `forEach` 方法的重载版本 `forEach(Consumer<? super E> action)`,其中的 `Consumer` 函数式接口可以接受一个参数并返回空。
例如,可以使用以下代码将集合中的字符串都转换成大写并打印出来:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(item -> {
String upperCase = item.toUpperCase();
System.out.println(upperCase);
});
```
java jdk8 forEach 更改循环的值
在 Java 8 中,`forEach` 方法是用于遍历集合或数组的一种方法。与 JavaScript 中的 `forEach` 方法类似,Java 8 中的 `forEach` 方法也不会改变集合或数组中的值,而是对每个元素执行给定的操作。
如果你想要修改集合或数组中的元素值,可以使用 Java 8 中的 `replace` 方法。例如:
```java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
list.replaceAll(n -> n * 2);
System.out.println(list); // [2, 4, 6]
```
在上面的例子中,我们使用 `replaceAll` 方法将集合中的每个元素乘以 2。`replaceAll` 方法接受一个 `UnaryOperator` 参数,表示对每个元素执行的操作。在本例中,我们使用 lambda 表达式 `n -> n * 2` 表示将每个元素乘以 2。
对于数组,我们可以使用 Java 8 中新添加的 `Arrays.setAll` 方法来替代 `forEach` 循环。例如:
```java
int[] arr = {1, 2, 3};
Arrays.setAll(arr, i -> arr[i] * 2);
System.out.println(Arrays.toString(arr)); // [2, 4, 6]
```
在上面的例子中,我们使用 `Arrays.setAll` 方法将数组中的每个元素乘以 2。`setAll` 方法接受一个 `IntUnaryOperator` 参数,表示对每个元素执行的操作。在本例中,我们使用 lambda 表达式 `i -> arr[i] * 2` 表示将每个元素乘以 2。
阅读全文