[英]Swapping elements in array (Java)
Java中是否有任何预定义的数组方法可以用来直接交换两个元素? 我们可以使用带有或不带有临时变量的函数,这很好。 但是我想知道是否有像Arrays.sort()这样的交换方法?
您需要使用List
接口的swap
方法。 List.swap
的定义如下所示:
public static <E> void swap(List<E> a, int i, int j) {
E tmp = a.get(i);
a.set(i, a.get(j));
a.set(j, tmp);
}
该文档说This is a polymorphic algorithm: It swaps two elements in any List, regardless of its implementation type.
如果您不熟悉java Collections
,那么首先需要使自己熟悉它。
Java中是否有任何预定义的数组方法可以用来直接交换两个元素?
默认的Java API没有任何交换数组元素的功能。 但是您可以使用Collections.swap(list, index1, index2);
交换list的元素Collections.swap(list, index1, index2);
您可以将数组转换为列表并执行交换,然后将列表转换为数组。
如果您不想执行此类操作,则可以查看一些可以提供此类功能的第三方库。
您还可以创建自己的通用函数。
例如,
public class Test {
@SuppressWarnings("unchecked")
public static <T> void swap(T[] arr, int index1, int index2) {
// Need to add null check and index checks
List<T> list = Arrays.asList(arr);
Collections.swap(list, index1, index2);
arr = (T[]) list.toArray();
}
public static void main(String[] args) {
Integer[] arr = { 1, 2, 3, 4, 5 };
swap(arr, 1, 2);
System.out.println(Arrays.asList(arr));
}
}
输出值
[1, 3, 2, 4, 5]
注意事项:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.