草庐IT

takeWhile

全部标签

c# - TakeWhile,但也获取停止它的元素

我想在LINQtoObjects上使用LINQTakeWhile函数。但是,我还需要知道“破坏”函数的第一个元素,即条件不成立的第一个元素。是否有一个函数可以获取所有不匹配的对象以及第一个匹配的对象?例如,给定集合{1,2,3,4,5,6,7,8},mySet.MagicTakeWhile(x=>x!=5);=>{1,2,3,4,5} 最佳答案 我想你可以使用SkipWhile,然后取第一个元素。varelementThatBrokeIt=data.SkipWhile(x=>x.SomeThing).Take(1);更新如果你想要一

java - 在 Java 8 Streams 上实现自定义中间操作

我正在尝试研究如何在Java8Stream上实现自定义中间操作。看来我被锁在门外了:(具体来说,我想获取一个流并返回每个条目,直到并包括第一个具有特定值的条目。之后我想停止生成任何东西-使其短路。它正在对输入数据运行一系列验证检查。我想在出现第一个错误时停止,如果有的话,但我想在途中整理警告。而且因为这些验证检查可能很昂贵-例如涉及数据库查找-我只想运行所需的最小集合。所以代码应该是这样的:Optionalresult=validators.stream().map(validator->validator.validate(data)).takeUntil(result->resul

java - takeWhile, dropWhile 惰性 java9

我认为在scala中这些方法工作正常但在java9dropWhile中工作不同。这里是takeWhile的例子Stream.of("a","b","c","de","f","g","h").peek(System.out::println).takeWhile(s->s.length()输出很好:a,b,c,de,[a,b,c]它不处理“de”之后的元素,因此它按预期工作但是dropWhile的工作方式与我预期的不同:Stream.of("a","b","c","de","f","g","h").peek(s->System.out.print(s+",")).dropWhile(s-

Python中dropwhile()和takewhile()函数有什么用的?

在Python中,dropwhile()和takewhile()是两个非常有用的函数,用于从可迭代对象中根据条件筛选元素。dropwhile()函数从可迭代对象的开头开始,跳过满足指定条件的元素,直到遇到第一个不满足条件的元素。相反,takewhile()函数从可迭代对象的开头开始,选择满足指定条件的元素,直到遇到第一个不满足条件的元素。本文将介绍dropwhile()和takewhile()函数的用法,并提供相应的代码示例。dropwhile()函数的用法dropwhile()函数的基本用法非常简单,它接受两个参数:要筛选的可迭代对象和条件函数。下面是基本用法的示例代码:fromiterto

java - takeWhile 与过滤器有何不同?

takeWhile()与Java9中的filter()有何不同。它有什么额外的实用程序?Stream.of(1,2,3,4,5,6,7,8,9,10).filter(i->i这可能是下面会做的Stream.of(1,2,3,4,5,6,7,8,9,10).takeWhile(i->i那么这个新功能的需求是什么? 最佳答案 filter将从流中删除所有不满足条件的项目。takeWhile将在第一次出现不满足条件的项目时中止流。例如Stream.of(1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1).fil

python - 如何不错过 itertools.takewhile() 之后的下一个元素

假设我们希望处理一个迭代器并希望按block处理它。每个block的逻辑取决于先前计算的block,因此groupby()没有帮助。在这种情况下,我们的friend是itertools.takewhile():whileTrue:chunk=itertools.takewhile(getNewChunkLogic(),myIterator)process(chunk)问题是takewhile()需要经过满足新block逻辑的最后一个元素,从而“吃掉”下一个block的第一个元素。对此有多种解决方案,包括包装或àlaC的ungetc()等。我的问题是:有没有优雅的解决方案?

java - takeWhile() 与平面图的工作方式不同

我正在使用takeWhile创建片段来探索它的可能性。与flatMap配合使用时,行为不符合预期。请在下面找到代码片段。String[][]strArray={{"Sample1","Sample2"},{"Sample3","Sample4","Sample5"}};Arrays.stream(strArray).flatMap(indStream->Arrays.stream(indStream)).takeWhile(ele->!ele.equalsIgnoreCase("Sample4")).forEach(ele->System.out.println(ele));实际输出:

java - takeWhile() 与平面图的工作方式不同

我正在使用takeWhile创建片段来探索它的可能性。与flatMap配合使用时,行为不符合预期。请在下面找到代码片段。String[][]strArray={{"Sample1","Sample2"},{"Sample3","Sample4","Sample5"}};Arrays.stream(strArray).flatMap(indStream->Arrays.stream(indStream)).takeWhile(ele->!ele.equalsIgnoreCase("Sample4")).forEach(ele->System.out.println(ele));实际输出:

java - 通过谓词限制流

是否有Java8流操作限制(可能无限)Stream直到第一个元素无法匹配谓词?在Java9中,我们可以使用takeWhile来打印所有小于10的数字。IntStream.iterate(1,n->n+1).takeWhile(n->n由于Java8中没有这样的操作,以一般方式实现它的最佳方式是什么? 最佳答案 takeWhile和dropWhile操作已添加到JDK9。您的示例代码IntStream.iterate(1,n->n+1).takeWhile(n->n在JDK9下编译和运行时,其行为将完全符合您的预期。JDK9已经发布。

java - 通过谓词限制流

是否有Java8流操作限制(可能无限)Stream直到第一个元素无法匹配谓词?在Java9中,我们可以使用takeWhile来打印所有小于10的数字。IntStream.iterate(1,n->n+1).takeWhile(n->n由于Java8中没有这样的操作,以一般方式实现它的最佳方式是什么? 最佳答案 takeWhile和dropWhile操作已添加到JDK9。您的示例代码IntStream.iterate(1,n->n+1).takeWhile(n->n在JDK9下编译和运行时,其行为将完全符合您的预期。JDK9已经发布。
12