当前位置: 首页 > 知识库问答 >
问题:

Java IntStream或LongStream按值限制,而不是按元素计数限制[重复]

蒋斯伯
2023-03-14

我想迭代/生成一个无限大的IntStream或LongStream,并用提供的最大值来限制它们,而不是用limit(long n)操作的元素计数来限制它们,例如获得前20个正数偶数:

List<Integer> evens = IntStream.iterate(0, i -> i + 2)
                               .limit(20)
                               .boxed()
                               .collect(Collectors.toList());

我需要的是用一个最大值来限制流。例如,如果我需要1000以下2的所有幂

List<Integer> evens = IntStream.iterate(1, i -> i * 2)  //1, 2, 4, 8, 16, 32...
                               .limit(<here some how use the value 1000>)
                               .boxed()
                               .collect(Collectors.toList());
List<Long> fibs = Stream.iterate(new long[]{1,1}, f -> new long[]{f[1], f[0] + f[1]})  //1,1,2,3,5,8,13,21...
                        .mapToLong(f -> f[1])
                        .limit(i -> i < 1000) //I know this doesn't work as limit expects a long value
                        .boxed()
                        .collect(Collectors.toList()); 
List<Integer> evens = IntStream.iterate(1, i -> i * 2)  //1, 2, 4, 8, 16, 32...
                               .filter(i -> i <= 1000)
                               .boxed()
                               .collect(Collectors.toList());

共有1个答案

阎志义
2023-03-14

在Java9+中,使用takewhile(i->i<=value)

 类似资料:
  • 问题内容: 有没有一种简单的方法可以将GROUP BY结果限制在前2位。以下查询返回所有结果。使用“ LIMIT 2”将整个列表减少到仅前2个条目。 结果如下: 谢谢乔恩 根据要求,我附上了表格结构和一些测试数据的副本。我的目标是创建一个视图,该视图具有每个唯一的rating_name的前2个结果 问题答案: 我认为MySQL中没有简单的方法。一种方法是通过为按rating_name分组的每一行生

  • 因为普罗米修斯topk返回的结果比预期的要多,而且因为https://github.com/prometheus/prometheus/issues/586需要客户端处理,而这些处理尚未通过https://github.com/grafana/grafana/issues/7664提供,所以我正在尝试对我的类似问题进行不同的近期解决方案。 在我的特殊情况下,我想要绘制的大多数度量值在大多数情况下都

  • 我需要限制每分钟的请求数。我还没有找到任何方法来使用Spring云网关redis。下面是当前的实现:图像实现 customRouter.getBurstCapacitycustomRouter.getReplenishRate 两者都仅在几秒钟内运行。示例:20 个请求在同一秒内与。 我在1分钟内需要20个请求。

  • 问题内容: 如何为特定类型执行ElasticSearch聚合?我意识到您可以在请求网址中指定索引和/或类型,但是我想对两种不同的类型进行汇总。 谢谢! 问题答案: 您可以按类型过滤聚合,然后使用子聚合。例如:

  • 我目前有一个简单的函数(发布在下面),它问用户一个问题,并希望有一个整数答案。 是否有一种方法可以使java限制可以输入控制台的字符,即只允许输入数字。 我知道在其他编程语言中有简单的方法来实现这一点,但我应该如何在java中实现这一点并将其实现到我的函数中呢?

  • 下面是一个实现: 下面是一个示例用法来检查可操作性: