行业知识
Java——Stream流的peek方法
2026-11-14 23:26:00
来源:互联网转载
Java Stream��的peek()方法也是用于查看每个元素,但不改变流的操作的方法。它接收一个Consumer类型的参数,该参数用于针对每个元素执行副作用操作。该方法返回一个与原始流相同的新流,因此可以进行链式操作。
()使用peek()方法可以方便地在流处理过程中调试或记录某些数据。例如,在以下示例中,我们查看每个字符串元素并将其转换为大写,然后将其添加到一个新的List中:
List list = Arrays.asList("apple", "banana", "orange");List newList = list.stream() .peek(s -> System.out.println("Processing element: " + s)) .map(String::toUpperCase) .collect(Collectors.toList()); 在执行过程中,peek()方法会打印出相应的调试信息,但并不会修改流中的元素。最后,我们将转换后的大写字符串添加到了新的List中。
()请注意,peek()方法的作用不是为了改变流中的元素,因此您应该避免在peek()方法中进行任何有副作用的操作。在Java 8中,Stream的设计旨在提供一种非常简洁、简单且易于使用的方式来处理数据,而不是作为一个逐步构建的可变状态的构建器,因此我们应该遵循设计的原则和实践。
peek还可以修改引用:
//修改前list = list.stream().map(listCategory -> {listCategory .setChildren(getChildrens(listCategory)); return listCategory;}) .collect(Collectors.toList());//修改后list = list.stream().peek(listCategory -> listCategory .setChildren(getChildrens(listCategory))) .collect(Collectors.toList());