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

在Java8中从Java.util.Stream.Stream检索列表

赵河
2023-03-14

我使用Java8 lambdas轻松筛选集合。但我没有找到一种简洁的方法来在同一语句中检索作为新列表的结果。这里是我迄今为止最简洁的方法:

List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);

网上的例子并没有回答我的问题,因为它们在没有生成新的结果列表的情况下就停止了。一定有更简洁的方式。我希望Stream类具有ToList()ToSet()、…等方法

变量targetlonglist是否可以通过第三行直接赋值?

共有1个答案

冯和硕
2023-03-14

您所做的可能是最简单的方法,前提是您的流保持顺序--否则您将不得不在foreach之前调用sequential()。

[稍后编辑:需要调用sequential()的原因是,如果流是并行的,那么当前的代码(foreach(TargetLongList::Add))会很活泼。即使这样,它也不会达到预期的效果,因为foreach显式不确定-即使在顺序流中,元素处理的顺序也无法保证。您必须使用foreachOrdered来确保正确的顺序。流API设计人员的意图是在这种情况下使用收集器,如下所示。]

另一种选择是

targetLongList = sourceLongList.stream()
    .filter(l -> l > 100)
    .collect(Collectors.toList());
 类似资料:
  • 问题内容: 是否可以通过使用列的索引来获取列名?我浏览了API文档,但找不到任何东西。 问题答案: 你可以从元数据中获取此信息。参见 例如 你可以从那里获取列名称。如果你这样做 然后也会为你获取检索到的标签名称。

  • 假设我有一个包含元素的列表。 使用Java8 streams,如何找到列表最小元素的索引(例如,在本例中为1)?

  • 我明白我需要用硒,但我不知道怎么用。结果始终是单个字符串的列表。理想情况下,我希望返回两个列表:一个带有unix datestamp(option value=“1576627200”),另一个带有“normal”日期(即18/12/2019)的列表。 任何帮助都将不胜感激。

  • 本文向大家介绍Visual Basic .NET从列表中检索项目,包括了Visual Basic .NET从列表中检索项目的使用技巧和注意事项,需要的朋友参考一下 示例 output: 你好,世界 如果您不知道项目的索引或仅了解字符串的一部分,请使用Find或FindAll方法 output: 你好,世界 该的FindAll方法返回一个新的列表(字符串) 输出=“您好,测试” output(1)=

  • 本文向大家介绍sharepoint项目。从列表中检索项目,包括了sharepoint项目。从列表中检索项目的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 在我要查询的字典中,该字典中的一项是具有多个项目()的列表。 我想检索每个值并存储在新列表中。您可以为此建议代码吗? 问题答案: http://docs.djangoproject.com/en/dev/ref/request- response/#django.http.QueryDict.getlist