Поскольку вы не хотите поменять 2 элемента, а скорее удалить элемент, а затем вставить его позже, вы можете использовать это:
public static <T> void move(List<T> list, int i, int j) {
list.add(j, list.remove(i));
}
Это использует методы List.add(int, T)
, которые вставляют элементв список с определенным индексом и List.remove(int)
, который удаляет элемент с данным индексом и возвращает его.
Другой способ - использовать Collections.rotate()
и List.sublist()
:
public static <T> void move(List<T> list, int i, int j) {
Collections.rotate(list.sublist(i, j), -1);
}