2016-08-06 59 views
1

Java中的數組是否有任何預定義的方法,可以直接交換兩個元素?我們可以使用或不使用臨時變量的函數,這很好。但我想知道是否有任何方法像Arrays.sort()進行交換?交換數組中的元素(Java)

+0

如果數組包含2個以上的元素,應該交換的數組是什麼? – haifzhan

+0

Collections.swap(List list,int i,int j); –

+0

@Bhatt將數組列入List? –

回答

2

是否有任何Java中的數組預定義的方法與哪個可以 直接交換兩個元素?

默認Java API沒有任何交換數組元素的函數。但是,您可以使用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)); 
    } 

} 

OUTPUT

[1, 3, 2, 4, 5] 

NOTES:

  1. 以上功能不會爲原始陣列工作
  2. SuppressWarnings是爲了避免取消選中投射警告而添加的
2

您需要使用swap方法的List接口。的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); 
} 

docThis is a polymorphic algorithm: It swaps two elements in any List, regardless of its implementation type.

如果你不熟悉java Collections,那麼你首先需要讓自己熟悉它。