在Java中,重组数组可以通过多种方法实现,以下是一些常用的方法:
使用`Arrays.sort()`
int[] arr = {5, 2, 8, 3, 1};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3, 5, 8]
使用循环手动交换元素
int[] arr = {5, 2, 8, 3, 1};
for (int i = 0; i < arr.length - 1; i++) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3, 5, 8]
使用`Collections.reverse()`
int[] arr = {5, 2, 8, 3, 1};
Collections.reverse(Arrays.asList(arr));
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3, 5, 8]
将数组转换为`List`并使用`List`方法进行重组
int[] arr = {5, 2, 8, 3, 1};
List
list = Arrays.asList(arr); Collections.reverse(list);
arr = list.toArray(new int);
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 3, 5, 8]
使用`System.arraycopy()`
int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};
int[] mergedArray = new int[arr1.length + arr2.length];
System.arraycopy(arr1, 0, mergedArray, 0, arr1.length);
System.arraycopy(arr2, 0, mergedArray, arr1.length, arr2.length);
System.out.println(Arrays.toString(mergedArray)); // 输出:[1, 2, 3, 4, 5, 6]
使用Java 8的`Stream` API
int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};
int[] mergedArray = Stream.of(arr1, arr2).flatMapToInt(Arrays::stream).toArray();
System.out.println(Arrays.toString(mergedArray)); // 输出:[1, 2, 3, 4, 5, 6]
使用Apache Commons Lang库的`ArrayUtils`
import org.apache.commons.lang3.ArrayUtils;
int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};
int[] mergedArray = ArrayUtils.addAll(arr1, arr2);
System.out.println(Arrays.toString(mergedArray)); // 输出:[1, 2, 3, 4, 5, 6]
以上方法可以根据具体需求选择使用。需要注意的是,对于基本类型数组,`System.arraycopy()`和`Arrays.copyOf()`等方法可以直接使用,而对于对象数组,可能需要考虑数组的复制和深拷贝问题。