2009-03-18 3 views
11

Каков наилучший способ переупорядочить элементы в списке? Мне нужна возможность перемещать элементы для перемещения элементов в списке, один шаг назад или вперед в индексе. Я думал получить индекс элемента, добавив его в индекс -1/+2 и удалив старую ссылку.Лучший способ изменить ArrayList на Java

Есть ли более быстрый способ обработки переупорядочения без создания дубликатов в списке в процессе.

+0

Просьба привести пример. Например, имея список ABCDEF, что вам нужно? Что-то вроде ABCEDF (перемещение элемента) или ABCEF (удаление элемента)? Почему вы пишете -1/+2 вместо -1/+1? – schnaader

+0

У меня было +2, как если бы вы добавили say 'C' в ваш пример к indexof (c) +1, вы получите ABCCDEF, удаление старого C вернет его в ABCDEF. put +2 даст вам ABCDCEF и удаление старого значения даст ABDCEF. Таким образом, +2 вместо +1. Но Collections.swap был именно тем, что я искал. –

ответ

37

Использование метода замены в JDK в

В JDK коллекций класс содержит метод только для этой цели называется Collections.swap. В соответствии с документацией API этот метод позволяет «поменять местами элементы на указанных позициях в указанном списке».

Я предлагаю это решение, так что вам не нужно удалять элементы из списка, и вам не нужно откатывать свой собственный метод свопинга. Кроме того, похоже, что этот метод существует с момента выпуска 1.4 Java, поэтому он должен работать для большинства современных JDK.

+0

Дох. Даже не видел этого. Удаление моего ответа ... –

+0

Я только помнил это, потому что я смотрел на него сегодня для моего проекта. Он находится в одном из темных уголков JDK. – Elijah

+0

Очень круто, я не думаю, что я когда-либо использовал этот метод, но он определенно может пригодиться. –

Смежные вопросы