2014-01-18 43 views
1

我有两个ArrayList。列表1的在Java中两个ArrayLists之间交换段的最快方法

内容是:

1,2,3,4,5 ,列表2的6,7-

内容是:

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

现在我想交换两个ArrayLists的粗体部分。

+1

我无意中点击提交按钮。现在我通过创建两个新的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

@Katona是它不会交换他们:) – gowtham

相关问题