我已将2D int数组转换为Stream:
IntStream dataStream = Arrays.stream(data).flatMapToInt(x -> Arrays.stream(x));
现在,我想按升序对列表进行排序。我试过这个:
dataStream.sorted().collect(Collectors.toList());
我对此感到困惑,因为在我看过的例子中,类似的事情没有错误。
答案 0 :(得分:6)
尝试
dataStream.sorted().boxed().collect(Collectors.toList());
因为collect(Collectors.toList())
不适用于IntStream
。
我还认为,首先要sorted()
然后boxed()
进行效果调优应该稍微好一些。
IntStream.collect()
方法具有以下签名:
<R> R collect(Supplier<R> supplier,
ObjIntConsumer<R> accumulator,
BiConsumer<R, R> combiner);
如果您真的想要使用它,您可以:
.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
正如这里建议的那样:
答案 1 :(得分:1)
问题是您尝试将let image = UIImage(...)
saveToCameraRoll(image: image) { print("URL: \(String(describing: $0))") }
流转换为列表,但int
仅适用于对象流,而不适用于基元流。
在将数据收集到列表中之前,您需要先将数据包装箱:
Collectors.toList