java - 使用 Streams 从整数数组中获取偶数
问题描述
我正在尝试获取一个整数数组,从中获取所有偶数,并将这些偶数放入 ArrayList,然后返回 ArrayList。我在下面的 for 循环中编写了代码,但想基本上将这个 for 循环压缩成一个使用 java 流的语句。我尝试在底部注释掉的 return 语句中这样做,但无法弄清楚。
public static ArrayList<Integer> evens(int[] results) {
ArrayList<Integer> evens = new ArrayList<Integer>();
for (int i = 0; i < results.length; i++) {
if (results[i] % 2 == 0) {
Integer num = Integer.valueOf(results[i]);
evens.add(num);
}
}
return evens;
// return Arrays.stream(results).filter(i -> i % 2 ==
// 0).collect(Collectors.toList());
}
解决方案
你很亲密。
Arrays.stream
在int
数组上返回一个IntStream
. 您必须先将其转换为Stream<Integer>
(via boxed()
),然后才能将其收集到List<Integer>
.
并且方法的返回类型应该是List<Integer>
.
public static List<Integer> evens(int[] results) {
return Arrays.stream(results)
.filter(i -> i % 2 == 0)
.boxed ()
.collect(Collectors.toList());
}
推荐阅读
- node.js - ObjectID 上的 Mongoose 验证器未触发
- html - 为什么要添加 . 在 aria-label 结尾被认为是一种不好的做法?
- java - 如何使用字符串将图像上传到 API 服务器
- video - 尝试使用 firefox 插件(ANT)下载 .ts 文件时出现以下错误
- ssh-tunnel - 无法使用 SSHTunnelForwarder 建立与 SSH 网关的会话
- node.js - 此表达式不可构造。类型“xxxx”没有构造签名
- c++ - 在 std::map 的描述中,“不精确”是什么意思?
- python - 使用 tkinter 和类创建多个不同颜色的形状
- css - 如何在 styled-components 中安排 Li 的
- javascript - 如何使用 sortablejs 对 dropzone 图像顺序进行排序和更新?