Перестановка указателей в списке Java - PullRequest
0 голосов
/ 15 февраля 2019

Представьте себе, что список в Java <1, 2, 3, 4, 5> определен индексами (1-5).

Если я хочу переместить элемент в индексе 2 (2) в индекс4 и измените список на <1, 3, 4, 2, 5>.

Существует ли простой способ / среда сбора для реализации этого?LinkedList выглядит как решение.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

use Collections :: swap method

List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4));
Collections.swap(list, 1,3);    // will swap the elements at the specified positions

Если вы хотите просто переместить один элемент в какую-то позицию, тогда попробуйте:

list.add(2, list.remove(0));    // move the item from index 0 to index 2
0 голосов
/ 15 февраля 2019

Поскольку вы не хотите поменять 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);
}
0 голосов
/ 15 февраля 2019

Одна из проблем, с которой вы сталкиваетесь, заключается в том, что при использовании набора для практических целей вы ограничиваете себя либо неупорядоченным HashSet, либо упорядоченным по типу TreeSet.Когда вы говорите об изменении индексации, вы неявно говорите о другом типе коллекции.И да, список будет хорошим выбором для коллекции, в которой вы задаете порядок.

Кроме того, имейте в виду, что индексирование в Java основано на 0, поэтому, как только вы получитеСписок в нужном вам порядке, например, Список <1, 3, 4, 2, 5>, 1 в индексе 0, 2 в индексе 3 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...