我正在尝试创建一个HashSet< Byte>使用
Java 8 Streams API的字节1,2,3,… 9.我想使用IntStream,然后将值降级为byte就可以了.
我正在尝试变种
的HashSet<字节> nums = IntStream.range(1,10).collect(Collectors.toSet());
的HashSet<字节> 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吗?
解决方法
您需要使用mapToObj,因为HashSet和所有泛型都需要对象
Set<Byte> nums = IntStream.range(1,10) .mapToObj(e -> (byte) e) .collect(Collectors.toSet());