我已经转换一个二维int数组到流:如何按升序对IntStream进行排序?
IntStream dataStream = Arrays.stream(data).flatMapToInt(x -> Arrays.stream(x));
现在,我要对列表进行排序升序排列。我已经试过这样:
dataStream.sorted().collect(Collectors.toList());
我感到困惑这一点,因为在例子我见过,类似的事情都没有错误完成。
我已经转换一个二维int数组到流:如何按升序对IntStream进行排序?
IntStream dataStream = Arrays.stream(data).flatMapToInt(x -> Arrays.stream(x));
现在,我要对列表进行排序升序排列。我已经试过这样:
dataStream.sorted().collect(Collectors.toList());
我感到困惑这一点,因为在例子我见过,类似的事情都没有错误完成。
与
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);
由于这里建议:
的问题是你正试图转换一个int
流到列表,但Collectors.toList
只适用于对象流,不适用于基元流。
你需要收集入名单前框数组:
dataStream.sorted().boxed().collect(Collectors.toList());