2016-08-06 12 views
1

Gibt es eine vordefinierte Methode für Array in Java, mit der man zwei Elemente direkt vertauschen kann? Wir können eine Funktion mit oder ohne temporäre Variable verwenden, das ist in Ordnung. Aber ich möchte wissen, gibt es irgendeine Methode wie Arrays.sort() zum Swapping?Elemente im Array austauschen (Java)

+0

Was ist ein Array, das ausgetauscht werden soll, wenn es mehr als 2 Elemente enthält ??? – haifzhan

+0

Collections.swap (Liste Liste, int i, int j); –

+0

@Bhatt Wird Array unter Liste fallen? –

Antwort

2

Gibt es eine vordefinierte Methode für Array in Java mit der man direkt zwei Elemente austauschen kann?

Die Standard-Java-API hat keine Funktion zum Austauschen von Array-Elementen. Aber Sie können Elemente der Liste mit Collections.swap(list, index1, index2); tauschen und Sie können Array zu Liste konvertieren und Swap ausführen und dann Liste in Array konvertieren.

Wenn Sie diese Operation nicht durchführen möchten, können Sie in eine Bibliothek von Drittanbietern schauen, die eine solche Funktion bereitstellen kann.

Sie können auch Ihre eigene generische Funktion erstellen.

Zum Beispiel

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. Above Funktion wird nicht für primitive Arrays arbeiten
  2. SuppressWarnings wird hinzugefügt, um die Deaktivierung der Casting-Warnung zu vermeiden
2

Sie müssen swap Methode der List Schnittstelle verwenden. Die Definition von List.swap geht so ...

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); 
} 

Die doc sagt, dass This is a polymorphic algorithm: It swaps two elements in any List, regardless of its implementation type.

Wenn Sie mit java Collections nicht vertraut sind, dann müssen Sie zuerst mit ihm selbst vertraut.

Verwandte Themen