- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
Stream
的 limit
方法返回一个新流,该流包含该流的元素,该流被截断为给定的最大长度。 limit
方法由前 n 个元素组成,其中 n 小于或等于给定的最大大小。
从 Java 文档中找到 limit
方法声明。
Stream<T> limit(long maxSize)
参数 maxSize 是 limit
返回的流中的最大元素数。limit
方法返回新的 Stream
。
如果参数 maxSize 为 -ve,该方法将抛出 IllegalArgumentException
。
limit
方法是一种短路有状态的中间操作。
流操作分为中间操作和终端操作,组合起来形成流管道。如果中间操作可以为无限输入产生有限流,则它是短路操作。中间操作分为无状态操作和有状态操作。在处理诸如 filter
和 map
之类的新元素时,无状态操作不会保留先前看到的元素的状态。在处理 distinct
和 limit
等新元素时,有状态操作可能会合并来自先前看到的元素的状态。
注意:limit
方法在顺序流管道上是一种廉价的操作,对于有序的并行管道来说可能很昂贵,尤其是对于较大的 maxSize 值。这是因为 limit(maxSize)
必然会以遇到的顺序返回第一个 maxSize 元素,而不是 maxSize 数字的任何元素。
现在我们将讨论 limit
方法示例。
示例 1:
假设我们有一个数字流,并且我们正在对它调用 limit
方法。
Stream.of(11, 12, 13, 14, 15).limit(3)
.forEach(s->System.out.println(s));
源流有 5 个数字,我们调用了最大大小为 3 的 limit(3)
。因此,我们的输出将从第一个元素开始最多为 3 个元素,即 11 12 13。
如果 limit
的最大尺寸大于元素个数,则流的所有元素将被 limit
方法选择。找到下面的代码。
Stream.of("A", "B", "C", "D").limit(10)
.forEach(s->System.out.println(s));
我们可以看到源流有 4 个元素,而我们正在调用最大大小为 10 的 limit
。这里 limit
将返回包含所有元素的流,输出将为 A B C D。
示例 2:
查找 limit
方法的更多示例。
LimitDemo2.java
package com.concretepage;
import java.util.Arrays;
import java.util.List;
public class LimitDemo2 {
public static void main(String[] args) {
System.out.println("--- code 1 ---");
List<String> list = Arrays.asList("Vijay", "Suresh", "Vinod");
list.stream()
.map(e -> "Mr. " + e)
.limit(2)
.forEach(s->System.out.printf("%s ", s));
System.out.println("\n--- code 2 ---");
List<Integer> numList = Arrays.asList(31, 32, 33, 34);
numList.stream()
.mapToInt(i -> i * 10)
.limit(3)
.forEach(s->System.out.printf("%s ", s));
}
}
输出
--- code 1 ---
Mr. Vijay Mr. Suresh
--- code 2 ---
310 320 330
示例 3:
查找具有并行流的 limit
方法的示例。
LimitDemo3.java
package com.concretepage;
import java.util.Arrays;
import java.util.List;
public class LimitDemo3 {
public static void main(String[] args) {
System.out.println("--- code 1 ---");
List<String> list = Arrays.asList("Varanasi", "Madurai", "Agartala");
list.parallelStream()
.limit(2)
.forEach(s->System.out.printf("%s ", s));
System.out.println("\n--- code 2 ---");
List<Integer> numList = Arrays.asList(41, 42, 43, 44);
numList.parallelStream()
.mapToInt(i -> i * 10)
.limit(3)
.forEach(s->System.out.printf("%s ", s));
}
}
输出
--- code 1 ---
Madurai Varanasi
--- code 2 ---
420 410 430
好吧,我对我的页面发生的事情有点困惑。我在底部有页码, table 上摆满了 23 种不同的元素。 每个页面应一次显示 5 个项目。我显示的页面发送了一个带有 pagenumber = 不管怎样的 g
几周前我开始学习 Ada。我知道 limited 在某些情况下声明了一个有限类型,不允许复制对象 来自 Ada Reference Manual 2012 7.5 1/2 A limited type
我想按 DESC 选择日期并限制为最后 3 个,然后我需要基本上翻转最后 3 个结果,以便它们按 ASC 排序 任何帮助将不胜感激,我正在使用 postgresql 最佳答案 SELECT * FRO
SELECT * FROM mm_tfs WHERE product_slug LIKE '%football%' AND schoolid = '8' AND category_id ='2
SELECT * FROM mm_tfs WHERE product_slug LIKE '%football%' AND schoolid = '8' AND category_id ='2
我正在尝试访问按“日期”键排序的表中恒定数量的最新文档。请注意,不幸的是,日期是被实现的(不是由我......),使得该值设置为字符串,例如“2014-01-14”,或者有时“2014-01-14 2
我目前正在使用具有限制 cpu、限制内存以及保留 cpu 和内存的 Docker Swarm。 完成测试后,我想删除这些配置。我找不到任何有关如何删除这些的文章。 是否有办法通过更新来删除这些设置而不
我目前正在使用具有限制 cpu、限制内存以及保留 cpu 和内存的 Docker Swarm。 完成测试后,我想删除这些配置。我找不到任何有关如何删除这些的文章。 是否有办法通过更新来删除这些设置而不
我必须对我的数据应用分页。我通过复杂的连接查询获取数据,没有任何子查询,只有简单的连接。 假设这个查询[这是一个非常简单的查询,我有一个比这个复杂的查询] SELECT states.state
我经常制作条形图,并将条形图的值额外包含为注释 (geom_text)。通常,我更喜欢这些值右对齐(与将标签放在条形顶部相反)。在绘制多面条形图时,我将这些值放在每个组中的最大值(我之前计算过)加上我
delivery-limit 和 x-delivery-limit 有什么区别? 当我将 x-delivery-limit 设置为 RabbitMQ 队列参数时,我可以看到它限制了我的消息重新排队尝试
delivery-limit 和 x-delivery-limit 有什么区别? 当我将 x-delivery-limit 设置为 RabbitMQ 队列参数时,我可以看到它限制了我的消息重新排队尝试
我正在使用 PostgreSQL 9.3。这应该在具有 100,000 多行的任何表上重现。 EXPLAIN ANALYZE 显示使用 LIMIT 2 扫描了更多行,但我不明白为什么。 限制 1: E
我正在尝试找出是否可以在 PHP 中全局设置和取消设置 MySQL 结果的默认限制。 一些可能看起来像的伪代码: $pdo->prepare('SELECT * FROM example'); $pd
我有下面的代码片段表 在这里我必须对投票前 3 个值求和。 假设 product_id 3030 vote 列的总和为 8.1 和 3671 总和 是 5.2 在这里,我必须获得前 3 个 produ
我正在使用全文搜索来提取行。 我根据分数 (ORDER BY SCORE) 对行进行排序,然后在前 20 行 (LIMIT 20) 中,我想对结果集进行兰德 (RAND)。 因此,对于任何特定的搜索词
帮助创建搜索条件 SELECT * FROM mlt_adr_city WHERE name LIKE "Text%" AND region_id = 59 AND id <> 0 IF (name
MySQL 查询示例: SELECT message_id, message_text FROM messages LIMIT 0 , 30 我得到的这个提示是错误的: HIN
我注意到如果我将查询限制为 1 个而不是 5 个,速度会急剧下降。 SELECT he. * FROM homematic_events he WHERE he.homematic_devices_i
我需要从我的表中获取最后一个 ID,以便我可以在另一个函数中使用它我在我的存储库中创建了这个函数,但我没有工作,它显示了一个错误: [Syntax Error] line 0, col 60: Err
我是一名优秀的程序员,十分优秀!