当前位置: 首页 > 面试题库 >

Java:使用Stream API从原始数组制作列表

薛涛
2023-03-14
问题内容

我正在尝试从原始数组制作一个列表

int[] values={4,5,2,3,42,60,20};
List<Integer> greaterThan4 =
Arrays.stream(values)
        .filter(value -> value > 4)
        .collect(Collectors.toList());

但是最后一个函数collect给我一个错误,因为它需要其他参数。它需要3个参数Supplier,ObjIntConsumer和BiConsumer。

当我看到仅使用collect(Collectors.toList());并获取列表的不同示例时,我不明白为什么它要3个参数。

我做错了什么?


问题答案:

是的,因为Arrays.stream返回IntStream。您可以调用boxed()获取一个Stream<Integer>,然后执行收集操作。

List<Integer> greaterThan4 = Arrays.stream(values)
                                   .filter(value -> value > 4)
                                   .boxed()
                                   .collect(Collectors.toList());


 类似资料:
  • 问题内容: 我还研究了其他一些主题和网站,它们似乎都提出了比答案更多的问题。 Josh Bloch谈设计 -讨论文章 但是我仍然无法解决我的问题。 当我克隆二维数组时: 我仍然不能安全地修改的内容,因为它仍然可以修改的内容。 实际上,有没有一种方法比我每次都从头开始重新创建一个数组更有效? 谢谢 问题答案: 在Java中,2D数组是对1D数组的引用的数组。仅克隆第一层(即引用),因此最终获得了 对

  • 问题内容: 这可能是一个简单的,总机问题,但我的第一次尝试令人惊讶地完全失败了。我想获取一组原始的long并将其转换成一个列表,我试图这样做: 什么是正确的方法? 问题答案: 我发现使用apache commons lang ArrayUtils(JavaDoc,Maven依赖项)很方便 它还具有反向API 编辑:更新以提供完整的转换为列表,如注释和其他修复建议。

  • 我使用SpringBoot RestTemplate来消费REST API。响应体由数组的数组组成,每个嵌套数组都有一个键值对,如下所示: 当然,这种JSON结构并不理想,但是我不得不使用它。我想将这个响应反序列化为一个只有一个字段(二维数组)的Java对象。 API是这样调用的: Java类结构如下所示(全部用Lombok的@NoArgsConstructor、@AllArgsConstruct

  • 问题内容: 如果我在代码中使用如下语句 它将数组初始化为特定的东西吗?(例如0)我似乎记得此文件记录在某处,但我不确定要搜索什么。 问题答案: JLS说,在15.10数组创建表达式中 […]创建具有指定长度的一维数组,并将数组的每个组件初始化为其默认值 在4.12.5变量的初始值处表示: 对于type ,默认值为零,即。

  • 是否有办法过滤掉所有大于最大值的值,这些值可以使用Stream API存储在中? 目前的情况是,你可以在前端用一个简单的搜索栏搜索一些客户的身份证。 例如:

  • 问题内容: 假设地,我有5个字符串数组对象: 我希望另一个数组对象包含这5个字符串数组对象。我该怎么做?我可以把它放在另一个数组中吗? 问题答案: 像这样: 要么 (后一种语法可以用于变量声明之外的赋值中,而较短的语法仅适用于声明。)