Unglaublich spät zur Party (meine Entschuldigung), sondern eine allgemeinere Lösung, die hier nicht vorgesehen umgesetzt werden (wird mit Primitiven arbeiten und nicht-Primitiven gleichermaßen):
public static void swap(final Object array, final int i, final int j) {
final Object atI = Array.get(array, i);
Array.set(array, i, Array.get(array, j));
Array.set(array, j, atI);
}
Sie kompilieren Zeit verlieren Sicherheit , aber es sollte den Trick machen.
Hinweis I: Sie erhalten eine NullPointerException
, wenn der gegebene array
null
ist, eine IllegalArgumentException
wenn die gegebene array
ist nicht ein Array und ein ArrayIndexOutOfBoundsException
wenn eine der beiden Indizes für die gegebene array
nicht gültig sind.
Hinweis II: Mit separaten Methoden für diese für jeden Array-Typ (Object[]
und alle primitiven Typen) wäre mehr performant (mit den anderen Ansätzen hier gegeben), da dies einige Boxen/Unboxing erfordert. Aber es wäre auch viel mehr Code zum Schreiben/Pflegen.
Bei String? Nein nicht wirklich. Wenn Sie es häufig tun müssen, können Sie auch einfach nur Ihre eigene Funktion rollen und dann ist es kein Problem – Grambot
Wenn Sie mit List statt Array arbeiten können, können Sie Collections.swap (List, i, j) verwenden. –
@Sergio Nakanishi: Interessanter Punkt, vielleicht kann ich zu Collections wechseln, aber ich bin mir nicht sicher, ob reine Array-Nutzung nicht schneller wäre? – Robin