来自IntStream的字节的java Java8流哈希集
我正试图用Java8StreamsAPI创建一个HashSet<Byte>
的byte
s1, 2, 3, ... 9
。我认为使用IntStream
然后将值降级到byte
就可以了
我在尝试不同的方法
HashSet<Byte> nums = IntStream.range(1, 10).collect(Collectors.toSet());
HashSet<Byte> nums = IntStream.range(1, 10).map(e -> ((byte) e)).collect(Collectors.toSet());
但这些都不管用
Error:(34, 73) java: method collect in interface java.util.stream.IntStream cannot be applied to given types;
required: java.util.function.Supplier<R>,java.util.function.ObjIntConsumer<R>,java.util.function.BiConsumer<R,R>
found: java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.Set<java.lang.Object>>
reason: cannot infer type-variable(s) R
(actual and formal argument lists differ in length)
我需要做flatMap
还是mapToObject
# 1 楼答案
您可以将来自Eclipse Collections的
MutableByteSet
与IntStream
一起使用,并避免装箱注意:我是Eclipse集合的提交者
# 2 楼答案
您需要使用mapToObj,因为HashSet和所有泛型都需要对象