2014-01-18 4 views
1

У меня есть два списка ArrayLists.Самый быстрый способ обмена разделами между двумя ArrayLists в Java

Содержание Список 1 является:

1,2, 3,4,5 , 6,7

Содержание Список 2 является:

7 , 6, 5,4,3, 2,1

Теперь я хочу поменять жирный раздел двух ArrayLists.

+1

Я случайно нажал на кнопку Submit. Пока я обмениваю эти разделы, создавая два новых ArrayLists и используя старые списки как конструктор. Затем я использую for-loop и делаю newlist1.set (i, list2.get (i)). Я почти уверен, что это самый медленный способ обмена. Что я могу сделать – user3209507

ответ

6

Я бы использовал петлю.

public static <T> void swap(List<T> list1, List<T> list2, int from, int to) { 
     for(int i = from; i < to; i++) 
      list2.set(i, list1.set(i, list2.get(i)); 
}  
+0

Четкий и точный ответ :) – Keerthivasan

+0

Сетка set/set/get немного неясна, но, надеюсь, понятна. –

+0

Да, это понятно! – Keerthivasan

1

Если содержимое не изменяется, то вы можете напрямую использовать

Collections.reverse(list1.subList(2,5)); 
Collections.reverse(list2.subList(2,5)); 
+0

Приятный трюк, это не меняет их, но результат эквивалентен для примера в вопросе :) – Katona

+0

@ Катона да, он не меняет их :) – gowtham

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