.stream().peak
时间: 2024-05-23 15:07:39 浏览: 73
Java 8中新增了Stream API,其中Stream.peek()方法是一个中间操作方法,它接收一个Consumer对象作为参数,对每个元素执行操作但不会改变流中的元素。它通常用于调试或记录流处理的中间状态。下面是一个简单的例子:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream()
.peek(i -> System.out.println("before filter: " + i))
.filter(i -> i % 2 == 0)
.peek(i -> System.out.println("after filter: " + i))
.forEach(System.out::println);
```
在上面的例子中,peek()方法打印出每个元素的值,并且在filter()方法之前和之后都打印了一次。这有助于我们了解在filter()方法之后剩余的元素。
相关问题
list.stream用法
list.stream() 是 Java 8 中引入的一个方法,用于将 List 转换为一个 Stream 对象。Stream 是一种新的数据处理方式,可以方便地对集合进行操作和处理。
使用 list.stream() 方法可以创建一个 Stream 对象,然后可以利用 Stream 提供的各种方法进行数据的过滤、映射、排序、聚合等操作。例如,可以使用 filter() 方法对 Stream 进行过滤,使用 map() 方法进行映射,使用 sorted() 方法进行排序等。
下面是一些 list.stream() 的示例用法:
1. 遍历 List 中的元素:
list.stream().forEach(System.out::println);
2. 筛选符合条件的元素:
list.stream().filter(e -> e > 5).forEach(System.out::println);
3. 对元素进行映射:
list.stream().map(e -> e * 2).forEach(System.out::println);
4. 对元素进行排序:
list.stream().sorted().forEach(System.out::println);
5. 对元素进行聚合操作:
int sum = list.stream().reduce(0, Integer::sum);
System.out.println(sum);
通过使用 list.stream(),我们可以更灵活地操作集合中的数据,并且代码更加简洁易读。希望对你有帮助!如果你还有其他问题,请继续提问。
map.stream
map.stream() 是 Java 8 中 Map 接口新增的一个方法,它返回一个 Stream 对象,可以对 Map 中的键值对进行流式处理。
使用 map.stream() 可以方便地对 Map 进行各种操作,比如过滤、转换、排序等。可以调用 Stream 的各种方法来实现需要的功能。
例如,下面的示例代码演示了如何使用 map.stream() 来过滤 Map 中的键值对,只保留满足条件的键值对:
```
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
// 使用 map.stream() 进行过滤
Map<String, Integer> filteredMap = map.entrySet()
.stream()
.filter(entry -> entry.getValue() > 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(filteredMap); // 输出: {B=2, C=3}
```
在上述例子中,通过调用 map.entrySet().stream() 获取到 Map 的 Entry 流,然后使用 filter() 方法过滤出值大于 1 的键值对,最后使用 collect() 方法将过滤后的键值对收集到一个新的 Map 中。