在 Java 中高效交换数组元素
我想知道是否有比做这样的事情更有效的方法在数组中交换两个元素:
String temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
好吧,这显然不是坏事,甚至是错误的,但是我需要经常交换,所以我有兴趣是否有任何Libs或其他东西可以提供更有效的方法来做到这一点?
我想知道是否有比做这样的事情更有效的方法在数组中交换两个元素:
String temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
好吧,这显然不是坏事,甚至是错误的,但是我需要经常交换,所以我有兴趣是否有任何Libs或其他东西可以提供更有效的方法来做到这一点?
不。你可以有一个函数来使它更简洁,你使用它的每个地方,但最终,完成的工作将是相同的(加上函数调用的开销,直到/除非HotSpot内联移动它 - 为了帮助它,创建函数)。static final
这应该使它无缝:
public static final <T> void swap (T[] a, int i, int j) {
T t = a[i];
a[i] = a[j];
a[j] = t;
}
public static final <T> void swap (List<T> l, int i, int j) {
Collections.<T>swap(l, i, j);
}
private void test() {
String [] a = {"Hello", "Goodbye"};
swap(a, 0, 1);
System.out.println("a:"+Arrays.toString(a));
List<String> l = new ArrayList<String>(Arrays.asList(a));
swap(l, 0, 1);
System.out.println("l:"+l);
}