如何按升序对IntStream进行排序?

Ale*_*iam 2 java sorting java-stream

我已经将2D int数组转换为Stream:

IntStream dataStream = Arrays.stream(data).flatMapToInt(x -> Arrays.stream(x));
Run Code Online (Sandbox Code Playgroud)

现在,我想按升序对列表进行排序.我试过这个:

dataStream.sorted().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但我得到编译时错误 错误

我对此感到困惑,因为在我看到的例子中,类似的事情没有错误.

fre*_*dev 6

试试吧

dataStream.sorted().boxed().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

因为collect(Collectors.toList())不适用于IntStream.

我也觉得应该是性能通话稍好第一sorted(),然后boxed().

IntStream.collect() 方法具有以下签名:

<R> R collect(Supplier<R> supplier,
              ObjIntConsumer<R> accumulator,
              BiConsumer<R, R> combiner);
Run Code Online (Sandbox Code Playgroud)

如果您真的想要使用它,您可以:

.collect(IntArrayList::new, MutableIntList::add, MutableIntList::addAll);
Run Code Online (Sandbox Code Playgroud)

正如这里建议的:

如何将Java 8 IntStream转换为List?