【发布时间】:2018-04-08 16:47:48
【问题描述】:
我正在尝试解决 challenge 问题,这需要您在 Java 中反转 int 数组。问题是你只能得到一个;,所以我假设你需要使用 Streams API 来做到这一点。
我尝试了传统的方法,它正确地反转了数组,但没有通过一个分号测试 -
public static int[] reverse(int[] a) {
List<Integer> numbers = IntStream.of(a).boxed().collect(Collectors.toList());
Collections.reverse(numbers);
return numbers.stream().mapToInt(i -> i).toArray();
}
接下来,我尝试使用Collections.reversedOrder() -
public static int[] reverse(int[] a) {
return Arrays.stream(a).boxed()
.sorted(Comparator.reverseOrder())
.mapToInt(i -> i).toArray();
}
但是,由于Collections.reversedOrder() 强制集合中元素的自然排序的反向,如果数组由数字 1 到 5 组成,无论如何数组中元素的顺序是,它总是返回{5, 4, 3, 2, 1}。
有一个Comparator.reversed() 方法,但它需要在现有的比较器上调用。我不确定该怎么做,或者这是否可行。
还有其他方法吗?
【问题讨论】:
-
提示:
IntStream.iterate创建反向序列。
标签: java arrays java-stream reverse