gpt4 book ai didi

Java 8 : Reverse an int array in one line (using Streams API)

转载 作者:行者123 更新时间:2023-12-02 12:04:52 27 4
gpt4 key购买 nike

我正在尝试解决 challenge这需要您反转 int Java 中的数组。问题是你只能得到一个 ; ,所以我假设您需要使用 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()方法,但需要在现有的比较器上调用。我不确定如何做到这一点,或者这是否有效。

还有其他方法可以做到这一点吗?

最佳答案

您可以通过反转索引流来做到这一点:

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

关于Java 8 : Reverse an int array in one line (using Streams API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com