我正在寻找最无痛的方式来过滤收藏。我在想
Collection<?> foo = existingCollection.stream().filter( ... ). ...
但我不确定从过滤器到返回或填充另一个集合的最佳方式。大多数例子看起来像是“在这里你可以打印”。可能我缺少一个构造函数或输出方法。
作为一个更符合Java8风格的函数式编程的例子:
Collection<String> a = Collections.emptyList();
List<String> result = a.stream().
filter(s -> s.length() > 0).
collect(Collectors.toList());
来自java的示例。util。流
的文档:
List<String>results =
stream.filter(s -> pattern.matcher(s).matches())
.collect(Collectors.toList());
收集器有一个toCollection()方法,我建议这样看。
大多数示例都避免将结果存储到集合中,这是有原因的。这不是推荐的编程方式。您已经有了一个
集合
,提供源数据和集合的集合本身没有任何用处。您希望对其执行某些操作,因此理想情况是使用流执行操作,并跳过将数据存储在中间集合中。这是大多数例子试图提出的。
当然,有很多现有的API与集合一起工作,并且总是会有的。因此,流API提供了不同的方法来处理对集合的需求。
>
获取包含所有元素的不可修改的
列表
实现(JDK
List<T> results = l.stream().filter(…).toList();
获取一个任意的
List
实现,保存结果:
List<T> results = l.stream().filter(…).collect(Collectors.toList());
获取一个不可修改的
List
禁止null
,如List.of(...)
(JDK
List<T> results = l.stream().filter(…).collect(Collectors.toUnmodifiableList());
获取包含结果的任意
集合
实现:
Set<T> results = l.stream().filter(…).collect(Collectors.toSet());
获取特定的
集合
:
ArrayList<T> results =
l.stream().filter(…).collect(Collectors.toCollection(ArrayList::new));
添加到现有的
集合
:
l.stream().filter(…).forEach(existing::add);
创建数组:
String[] array=l.stream().filter(…).toArray(String[]::new);
使用数组创建具有特定行为(可变、固定大小)的列表:
List<String> al=Arrays.asList(l.stream().filter(…).toArray(String[]::new));
允许具有并行功能的流添加到临时本地列表中,然后将其加入:
List<T> results
= l.stream().filter(…).collect(ArrayList::new, List::add, List::addAll);
(注意:这与
collector.toList()
当前的实现方式密切相关,但这是一个实现细节,即不能保证toList()
收集器的未来实现仍然会返回ArrayList
)
问题内容: 我正在开发一个使用大型MySQL表的spring应用程序。加载大表时,我得到一个,因为驱动程序试图将整个表加载到应用程序内存中。 我尝试使用 但是然后我打开的每个ResultSet都挂了; 在网上查看时,我发现发生这种情况是因为它尝试在关闭ResultSet之前尝试加载所有未读的行,但事实并非如此,因为我这样做是: 小表(3行)也会发生挂起,如果我不关闭RecordSet(在一种方法中
我正在尝试为firestore中的社交媒体应用程序组织数据。为帖子创建一个新集合或将其放入用户的子集合更好吗? 深度应该是一样的,但是一种方式比另一种方式有什么优势吗? 创建新集合: 职位(集合) 用户(集合) 用户中的子集合: 用户(集合)
我目前正在尝试轻松地将消息从一个Kafka集群上的主题流式传输到另一个集群(远程)- 所以假设WordCount演示在另一台PC上的一个Kafka-Instance上,而不是我自己的PC上。我也有一个Kafka-Instance在我的本地机器上运行。 现在我想让WordCount演示在包含应该计算单词的句子的Topic(“远程”)上运行。 然而,计数应该写入我本地系统上的Topic而不是“远程”T
问题内容: 我一直遇到这个问题: 我想让hibernate管理一个表示集合集合的表。例如: 地图地图 套装清单 清单地图 例如,我希望能够代表这一点: 作为一个表: 没有自定义的hibernate代码似乎是不可能的,我不介意。但是我希望有人对自定义代码的外观有所指导。 我应该扩展AbstractPersistentCollection吗? CompositeUserType? 可以管理多个表是否正
在上一个小节中我们学习了混合函数相关的语法特性,或者说是具有返回值的函数。 在 Less 中,我们可以把一个规则集当作一个 mixins 来使用,但是要注意区别两者之间的不同之处。 1. 什么是规则集? Allow wrapping of a css block, defined in a mixin 。——官方定义 慕课解释:把一个值为规则集的变量作为 Mixins 使用。 2. 语法详情 变量
我正在制作一些lambda来从dynamoDB表中获取数据。 DynamoDB表具有 复合主键 'setId'作为分区键(范围键)(我用这个词'set'作为名词,就像'group'一样) 'id'作为排序键(散列键) 如果我理解正确, 我可以使用setId来查询,因为DynamoDb通过分区键进行集合。 所以我尝试了这个参数。 但它返回错误 Q. 获取集合是否需要排序键? 提前谢谢! 仅供参考)我