一般问题:如何正确地反转一个流?假设我们不知道这个流包含什么类型的元素,有什么通用方法可以反转任何流?
具体问题:
IntStream
提供了range
方法来在特定范围内生成整数IntStream.range(-range,0)
,现在我想将其反转,从0到负数的切换范围行不通,也无法使用Integer::compare
。
List<Integer> list = Arrays.asList(1,2,3,4);
list.stream().sorted(Integer::compare).forEach(System.out::println);
使用 IntStream
我会得到以下编译错误:
Error:(191, 0) ajc: The method
sorted()
in the typeIntStream
is not applicable for the arguments (Integer::compare
)
我错过了什么?
IntStream
没有.sorted(Comparator)
方法;你必须先通过一个Stream<Integer>
并在那里反转后再产生一个IntStream
。 - fgeIntStream.range(0, n)
,可以使用类似于map(i -> n - i - 1)
的方式。无需进行装箱和排序。 - Stuart Marks1, 3, 2
,您期望的结果是什么?您想要倒转后的“流”,例如2, 3, 1
,还是排序后的“流”,例如3, 2, 1
? - chiccodoro