java - Java 流 - 将 int 数组映射并存储到 Set 中
问题描述
我有一个数组[5, 6, 7, 3, 9]
,我想将数组中的每个元素减去 2,然后将其存储在 a 中Set
,所以我所做的是
Set<Integer> mySet = Arrays.stream(arr1).map(ele -> new Integer(ele - 2)).collect(Collectors.toSet());
但我在这里遇到两个例外
The method collect(Supplier<R>, ObjIntConsumer<R>, BiConsumer<R,R>) in the type IntStream is not applicable for the arguments (Collector<Object,?,Set<Object>>)
"Type mismatch: cannot convert from Collector<Object,capture#1-of ?,Set<Object>> to Supplier<R>
这些错误是什么意思,我该如何解决这里的Java Stream
操作问题?
解决方案
它看起来像arr1
is an int[]
,因此Arrays.stream(arr1)
返回 an IntStream
。你不能申请.collect(Collectors.toSet())
一个IntStream
。
你可以把它装箱到Stream<Integer>
:
Set<Integer> mySet = Arrays.stream(arr1)
.boxed()
.map(ele -> ele - 2)
.collect(Collectors.toSet());
甚至更简单:
Set<Integer> mySet = Arrays.stream(arr1)
.mapToObj(ele -> ele - 2)
.collect(Collectors.toSet());
推荐阅读
- activemq - 使用 cURL 读取 ActiveMQ 主题 - 获取消息体
- c# - C# 从 CancellationToken.Register 内部抛出 OperationCanceledException
- c - 为什么将EXE文件转换为二进制代码,添加到C并重新创建不起作用?
- r - 如何将时间范围分解为每月查询?
- c++ - 在 C++ 中编写数据成员访问
- html - 禁用复制元素样式及其内部文本
- javascript - WebRTC 远程和本地视频都以本地流显示
- c - openCL 内核计算 Pi 的值不正确
- perl - Perl 两个相同的字符串比较为不相等
- php - 如何使用诀窍 API 获取每月明智的记录?