我已经习惯了使用Java的Stream#Peek
方法,因为它是一种有用的方法来调试中间流操作。对于那些不熟悉Stream#Peek
方法的人,以下是其定义:
Stream<T> peek(Consumer<? super T> action)
返回一个由此流的元素组成的流, 另外在从生成的流中消耗每个元素时执行提供的操作。这是一种中间操作。
考虑下面这个简单的例子:
List<Integer> integerList = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
List<Integer> result = integerList.stream()
.filter(i -> i % 2 == 0)
.peek(System.out::println)
.collect(Collectors.toList());
使用
Stream#Peek
方法,这应该基本上允许我打印所有偶数到控制台,以便我可以测试看看是否符合我的期望。我尝试寻找答案来解决问题,但似乎在
C#
中找不到类似的方法,请问有谁知道Java中的Stream#Peek
的等效方法或具有类似行为的其他方法吗?
IEnumerable
不存在这个问题是没有争议的。虽然是否为IEnumerable
提供此功能存在争议,但为什么它不存在已经被清楚地阐述,并且不容置疑。 - ServyToList().ForEach(Console.Write)
。 - user1242967findFirst
是一个短路终端操作,所以我之前说的不正确。我已经编辑了帖子来说明我的最初意图。 - Ousmane D.