У меня есть такой ArrayList:
val myArrayList = ArrayList<String>()
myArrayList.add("a")
myArrayList.add("b")
myArrayList.add("c")
До сих пор «a» - это индекс 0, «b» - это индекс 1, а «c» - это индекс 2. Но я хочу, чтобы «a» перешла в конец ArrayList. Я имею в виду, что я хочу, чтобы индексы были такими: «b» индекс 0, «c» индекс 1, «a» индекс 2.
Вы знаете, как это возможно?
Есть два способа решить эту проблему. Метод добавления ArrayList (с одним параметром) автоматически добавляет все, что вы добавляете, в конец списка. Вот два способа решить эту проблему:
myArrayList.add("c")
myArrayList.add("b")
myArrayList.add("a")
Порядок этих трех вызовов методов имеет значение в приведенном выше случае. Вы также можете сделать это:
myArrayList.add(0, "c")
myArrayList.add(1, "b")
myArrayList.add(2, "a")
В этом случае порядок трех вызовов методов не имеет значения.
Нет, я это знаю. Я хочу менять индексы, когда захочу, когда это необходимо
Вам придется создать функцию подкачки, потому что в классе ArrayList нет встроенных методов подкачки.
Не могли бы вы отредактировать свой ответ и привести пример этой функции обмена?
Можно использовать Collections.swap(List<?> list, int i, int j);
Как это Collections.swap(myArrayList, 0, 2);
Использовать это
myArrayList.add("a");
myArrayList.add("b");
myArrayList.add("c");
Collections.swap(myArrayList, 1, 2);
Collections.swap(myArrayList, 2, 0);
Log.e("output",myArrayList.toString());
Выход
[b, c, a]
Очень простое решение:
java.util.Collections.rotate(myArrayList, -1)
Таким образом, размер списка не будет иметь значения, даже если список пуст.
Попробуй в Котлинская площадка
вы можете использовать функцию подкачки, чтобы поменять местами после добавления.