2009-03-18 11 views
11

Jaki jest najlepszy sposób na zmianę kolejności elementów na liście? Potrzebuję możliwości przenoszenia elementów, aby przenieść elementy na liście, o jeden krok wstecz lub do przodu w indeksie. Zastanawiałem się nad uzyskaniem indeksu elementu, dodając go w indeksie -1/+2 i usuwając stare odniesienie.Najlepszy sposób na zmianę ArrayList w Javie

Czy istnieje szybszy sposób obsługi zmiany kolejności bez tworzenia duplikatów na liście w procesie.

+0

Proszę podać przykład. Na przykład, mając listę ABCDEF, czego chcesz? Coś jak ABCEDF (przenoszenie elementu) lub ABCEF (usuwanie elementu)? Dlaczego piszesz -1/+2 zamiast -1/+1? – schnaader

+0

Miałem +2, jak gdyby dodać "C" w swoim przykładzie do indexof (c) +1, dostaniesz ABCCDEF usunięcie starego C przeniesie go z powrotem do ABCDEF. wprowadzenie +2 da ci ABCDCEF, a usunięcie starej wartości da ABDCEF. Tak więc +2 zamiast +1. Ale Collections.swap było dokładnie tym, czego szukałem. –

Odpowiedz

37

użyć metody wymiany JDK za

JDK za Kolekcje klasa zawiera metodę właśnie w tym celu o nazwie Collections.swap. Zgodnie z dokumentacją API ta metoda umożliwia "zamianę elementów w określone pozycje na określonej liście."

Proponuję takie rozwiązanie, aby nie musieć usuwać elementów z Listy i aby nie trzeba było stosować własnej metody zamiany. Wygląda na to, że ta metoda istnieje już od wydania Java w wersji 1.4, więc powinna działać w przypadku większości nowoczesnych JDK.

+0

Doh. Nawet tego nie widziałem. Usunięcie mojej odpowiedzi ... –

+0

Przypomniałem sobie tylko to, ponieważ patrzyłem na nią dzisiaj na mój projekt. Jest w jednym z ciemnych zakątków JDK. – Elijah

+0

Bardzo fajne, nie sądzę, żebym kiedykolwiek używał tej metody, ale z pewnością może się przydać. –

Powiązane problemy