我想知道有没有比这种方法更有效的交换数组中两个元素的方式:
String temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
嗯,这显然不是坏事,甚至也不是错的,但我需要经常交换,所以我想知道是否有任何库或其他东西可以提供更高效的方法来做到这一点?
我想知道有没有比这种方法更有效的交换数组中两个元素的方式:
String temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
嗯,这显然不是坏事,甚至也不是错的,但我需要经常交换,所以我想知道是否有任何库或其他东西可以提供更高效的方法来做到这一点?
对象和基本类型的解决方案:
public static final <T> void swap(final T[] arr, final int i, final int j) {
T tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final boolean[] arr, final int i, final int j) {
boolean tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final byte[] arr, final int i, final int j) {
byte tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final short[] arr, final int i, final int j) {
short tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final int[] arr, final int i, final int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final long[] arr, final int i, final int j) {
long tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final char[] arr, final int i, final int j) {
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final float[] arr, final int i, final int j) {
float tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static final void swap(final double[] arr, final int i, final int j) {
double tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
这只是一种“黑客”风格的方法:
int d[][] = new int[n][n];
static int swap(int a, int b) {
return a;
}
...
in main class -->
d[i][j + 1] = swap(d[i][j], d[i][j] = d[i][j + 1])
public class SwapElements {
public static void main(String[] args) {
int[] arr1 = new int[5];
int[] arr2 = {10,20,30,40};
System.out.println("arr1 Before Swapping " + Arrays.toString(arr1));
System.out.println("arr2 Before Swapping " + Arrays.toString(arr2));
int temp[];
arr1[3] = 5;
arr1[0] = 2;
arr1[1] = 3;
arr1[2] = 6;
arr1[4] = 10;
temp = arr1;
arr1 = arr2;
arr2 = temp;
System.out.println("arr1 after Swapping " + Arrays.toString(arr1));
System.out.println("arr2 after Swapping " + Arrays.toString(arr2));
}
}