Java заменить список с подсписком - PullRequest
0 голосов
/ 14 октября 2011

У меня есть список

ArrayList list = new ArrayList(Arrays.asList(1,2,3,4,5,3,4,2,4,5,3,10));

И у меня есть другой подсписок

ArrayList sublist = new ArrayList(Arrays.asList(4,5,3));

Я искал функциональность, чтобы заменить подсписок внутри списка

с другим подсписком

ArrayList sublist = new ArrayList(Arrays.asList(100,100)));

поэтому после поиска и замены новый список должен выглядеть так:

list = (1,2,3,100,100,4,2,100,100,10);

Я не смог найти API для этого в Java.

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Не уверен, существует ли какой-либо API для этого или нет, но вы можете воспользоваться интерфейсом List в Java.

Если вы комбинируете использование containsAll (Collection c) Возвращает trueесли этот список содержит все элементы указанной коллекции.

removeAll (Коллекция c) Удаляет из этого списка все его элементы, которые содержатся в указанной коллекции (необязательная операция).

и

addAll (int index, Collection c) Вставляет все элементы в указанной коллекции в этот список в указанной позиции (необязательная операция).

Я думаю, вы можете легко выполнить то, что вынужно.

Взгляните сюда: http://download.oracle.com/javase/6/docs/api/java/util/List.html

0 голосов
/ 14 октября 2011

Если вы создадите подсписок как true подсписок list, например, используя List#subList(), то (неструктурные) изменения, внесенные в sublist, будут отраженыв list.

List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 3, 4, 2, 4, 5, 3, 10);
List<Integer> sublist = list.subList(3, 6);

for (int i=0; i<sublist.size(); i++)
{
    sublist.set(i, 100);
}

System.out.println(sublist);
// prints 100, 100, 100
System.out.println(list);
// prints 1, 2, 3, 100, 100, 100, 4, 2, 4, 5, 3, 10

Демонстрация: http://ideone.com/ljvd0


Lists.newArrayList(...) происходит от Google Guava .

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