2009-03-18 25 views
11

Was ist der beste Weg, Elemente in einer Liste neu anzuordnen? Ich brauche die Fähigkeit, Elemente zu verschieben, um Elemente in der Liste zu verschieben, einen Schritt vor oder zurück im Index. Ich dachte daran, den Index des Gegenstandes zu bekommen, addiere ihn bei Index -1/+2 und entferne die alte Referenz.Die beste Methode zum Sortieren einer ArrayList in Java

Gibt es einen schnelleren Weg, die Umordnung zu handhaben, ohne dabei Duplikate in der Liste zu erzeugen.

+0

Bitte geben Sie ein Beispiel an. Zum Beispiel mit der Liste ABCDEF, was willst du? Etwas wie ABCEDF (ein Element verschieben) oder ABCEF (ein Element entfernen)? Warum schreibst du -1/+2 statt -1/+1? – schnaader

+0

Ich hatte +2, als ob du in deinem Beispiel "C" zu indexof (c) +1 addierst, du bekommst ABCCDEF, das alte C entfernst es zurück zu ABCDEF. Das Setzen von +2 gibt ABCDCEF und das Entfernen des alten Wertes ergibt ABDCEF. Also +2 statt +1. Aber Collections.swap war genau das, wonach ich suchte. –

Antwort

37

Verwenden Sie die Swap-Methode des JDK

Die Kollektionen Klasse JDK enthält eine Methode nur für diesen Zweck Collections.swap genannt. Gemäß der API-Dokumentation ermöglicht diese Methode "die Elemente an den angegebenen Positionen in der angegebenen Liste zu tauschen".

Ich empfehle diese Lösung, so dass Sie keine Elemente aus der Liste entfernen müssen, so dass Sie Ihre eigene Swap-Methode nicht rollen müssen. Es sieht auch so aus, als ob diese Methode seit der Version 1.4 von Java existiert und daher für die meisten modernen JDKs funktionieren sollte.

+0

Doh. Hab das nicht mal gesehen. Lösche meine Antwort ... –

+0

Ich erinnerte mich nur daran, weil ich es heute für mein Projekt ansah. Es ist in einer der dunklen Ecken des JDK. – Elijah

+0

Sehr cool, ich glaube nicht, dass ich jemals diese Methode verwendet habe, aber es könnte definitiv nützlich sein. –

Verwandte Themen