Java8:在一行中反转int数组(使用Streams API)

Java8:在一行中反转int数组(使用Streams API),java,arrays,java-stream,reverse,Java,Arrays,Java Stream,Reverse,我正在尝试解决一个需要在Java中反转int数组的问题。问题是你只能得到一个,所以我假设您需要使用Streams API来实现这一点 我尝试了传统的方法,它正确地反转数组,但没有通过一个分号测试- public static int[] reverse(int[] a) { List<Integer> numbers = IntStream.of(a).boxed().collect(Collectors.toList()); Collections.revers

我正在尝试解决一个需要在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()
包含集合中元素的自然顺序的反向,如果数组由数字1到5组成,则无论数组中元素的顺序如何,它都将始终返回
{5,4,3,2,1}

有一个方法,但需要在现有的比较器上调用它。我不知道该怎么做,也不知道这是否管用


还有其他方法吗?

可以通过反转索引流来实现:

return IntStream.range(0, a.length)
        .map(i -> a[a.length - 1 - i])
        .toArray();

提示:
IntStream。迭代
以创建反向序列。与副本中的解决方案相同。(不是否决,只是评论)我想要LINQ提供的
Reverse()
方法。
return IntStream.range(0, a.length)
        .map(i -> a[a.length - 1 - i])
        .toArray();