正确的做法是从头到尾遍历这个数组并交换元素i和length-i-1,即。 e.第一个和最后一个,第二个和最后一个,依此类推:
int[] arr = {1, 4, 6, 5, 23, 3, 2};
IntStream.range(0, arr.length / 2).forEach(i -> {
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
});
System.out.println(Arrays.toString(arr));
// [2, 3, 23, 5, 6, 4, 1]
如果您继续从中间迭代到末尾,则将它们交换回来:
IntStream.range(arr.length / 2, arr.length).forEach(i -> {
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
});
System.out.println(Arrays.toString(arr));
// [1, 4, 6, 5, 23, 3, 2]
另见:
• Is there any other way to remove all whitespaces in a string?
•Is there a way to reverse specific arrays in a multidimensional array in java?