本文目录导读:

我来介绍几种Java数组反转的实现方法:
基础方法:双指针法(推荐)
public class ArrayReverse {
public static void reverseArray(int[] arr) {
int left = 0;
int right = arr.length - 1;
while (left < right) {
// 交换左右两个元素
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
// 移动指针
left++;
right--;
}
}
// 测试代码
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
System.out.println("原始数组:" + Arrays.toString(arr));
reverseArray(arr);
System.out.println("反转后:" + Arrays.toString(arr));
}
}
创建新数组方法
public static int[] reverseArrayNew(int[] arr) {
int[] reversed = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
reversed[i] = arr[arr.length - 1 - i];
}
return reversed;
}
// 使用示例
int[] original = {1, 2, 3, 4, 5};
int[] reversed = reverseArrayNew(original);
使用Collections工具类(适配对象数组)
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public static Integer[] reverseUsingCollections(Integer[] arr) {
List<Integer> list = Arrays.asList(arr);
Collections.reverse(list);
return list.toArray(new Integer[0]);
}
// 使用示例
Integer[] arr = {1, 2, 3, 4, 5};
Integer[] reversed = reverseUsingCollections(arr);
System.out.println(Arrays.toString(reversed)); // [5, 4, 3, 2, 1]
递归方法
public static void reverseRecursive(int[] arr, int left, int right) {
if (left >= right) {
return;
}
// 交换元素
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
// 递归处理剩余部分
reverseRecursive(arr, left + 1, right - 1);
}
// 使用示例
int[] arr = {1, 2, 3, 4, 5};
reverseRecursive(arr, 0, arr.length - 1);
字符串数组反转示例
public class StringArrayReverse {
public static void main(String[] args) {
String[] strArr = {"A", "B", "C", "D"};
System.out.println("原始数组:" + Arrays.toString(strArr));
for (int i = 0; i < strArr.length / 2; i++) {
int j = strArr.length - 1 - i;
String temp = strArr[i];
strArr[i] = strArr[j];
strArr[j] = temp;
}
System.out.println("反转后:" + Arrays.toString(strArr));
}
}
方法对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 双指针法 | 空间复杂度O(1),效率高 | 修改原数组 | 大多数场景推荐 |
| 创建新数组 | 不修改原数组 | 空间复杂度O(n) | 需要保留原数组 |
| Collections工具类 | 代码简洁 | 只适用于对象数组 | 简单测试使用 |
| 递归方法 | 思路清晰 | 可能栈溢出 | 学习递归概念 |
完整示例代码
import java.util.Arrays;
public class ArrayReverseDemo {
// 双指针法(推荐)
public static void reverse(int[] arr) {
int left = 0, right = arr.length - 1;
while (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
// 通用方法:支持任何类型数组
public static <T> void reverse(T[] arr) {
int left = 0, right = arr.length - 1;
while (left < right) {
T temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
public static void main(String[] args) {
// 测试整数数组
int[] intArr = {1, 2, 3, 4, 5};
System.out.println("原数组:" + Arrays.toString(intArr));
reverse(intArr);
System.out.println("反转后:" + Arrays.toString(intArr));
// 测试字符串数组
String[] strArr = {"Hello", "World", "Java"};
System.out.println("\n原数组:" + Arrays.toString(strArr));
reverse(strArr);
System.out.println("反转后:" + Arrays.toString(strArr));
}
}
运行结果
原数组:[1, 2, 3, 4, 5]
反转后:[5, 4, 3, 2, 1]
原数组:[Hello, World, Java]
反转后:[Java, World, Hello]
推荐使用双指针法,因为它的时间复杂度为O(n),空间复杂度为O(1),是最优的解决方案。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播