Java 中反转数组

培训教学 潘老师 7个月前 (09-20) 162 ℃ (0) 扫码查看

了解如何在 Java 中反转数组。反转数组与原始数组大小相同,并且包含相同的元素,但顺序相反。

String[] array          = {"A", "B", "C", "D", "E"};

String[] reveresedArray = {"E", "D", "C", "B", "A"};

1.Collections.reverse() API

翻转数组的最简单方法是使用专为此目的构建的现有API。Collections.reverse() 方法就是这样的一个API。该方法会颠倒列表中的元素,因此我们必须首先通过使用 java.util.Arrays.asList(array) 将数组转换为列表,然后再颠倒列表。这将同时颠倒支持数组中的元素。

请注意,reverse() 方法会颠倒原始数组中元素的顺序。因此,如果您希望保持原始数组不变,请考虑首先克隆数组。

//反转对象数组
String[] array = {"A", "B", "C", "D", "E"};
Collections.reverse(Arrays.asList(array));
System.out.println(Arrays.toString(array)); //[E, D, C, B, A]

警告:请注意,reverse() API 不适用于原始数组,因为Arrays.asList(intArray) 将返回一个包含唯一元素为原始数组的 List<int[]>。因此,没有要颠倒的内容。

//不适用于原始数组
int[] array = {1, 2, 3};
Collections.reverse(Arrays.asList(array));   //数组未反转

2.在For循环中交换数组元素

另一种简单直接的方法是迭代数组,将起始位置的元素与最后位置的元素交换。

例如,给定的图像描述了交换过程,其中我们有一个包含 5 个元素的数组。

  • 在第一次迭代中,我们交换第一个和最后一个元素。
  • 在第二次迭代中,我们交换第二个和倒数第二个元素。
  • 同样的交换在for 循环中进行,直到到达数组的中间,此时数组已被反转。

String[] array = {"A", "B", "C", "D", "E"};
for (int i = 0; i < array.length / 2; i++) {
    String temp = array[i];
    array[i] = array[array.length - 1 - i];
    array[array.length - 1 - i] = temp;
}
System.out.println(Arrays.toString(array)); //[E, D, C, B, A]

3. 使用 Stream API 反转数组

在这种方法中,我们将从最后一个位置开始反向读取数组元素,然后将所有元素存储在一个新数组中。

在这种方法中,原始数组保持不变。

final String[] arr = new String[]{"A","B","C","D","E"};
Object[] reversedArr = IntStream.rangeClosed(1, array.length)
    .mapToObj(i -> arr[arr.length - i])
    .toArray();
System.out.println(Arrays.toString(reversedArr)); //[E, D, C, B, A]

4.ArrayUtils.reverse()

如果我们的应用程序现有对Apache Commons Lang 库的依赖,那么它就有一个出色且直接的 API 来反转任何类型的数组。

String[] array = {"A", "B", "C", "D", "E"};
ArrayUtils.reverse(arr);
System.out.println(Arrays.toString(arr)); //[E, D, C, B, A]

5.结论

在这个简短的教程中,我们学习了使用不同的技巧来翻转数组。我们学会了使用 for 循环、交换元素、Collections API 以及 Apache Commons 的 ArrayUtils 类。

在任何一种方法中,如果您想保持原始数组不变,请首先克隆数组,然后再对其应用翻转逻辑。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/9163.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】