将数组列表中的数据从索引n替换为x

时间:2018-03-06 07:52:58

标签: java arraylist

我有两个整数类型ArrayLists。如何将ArrayList 1的值从索引5更改为10,使用ArrayList 2中相同索引的值,而不必单独输入所有值?

我试图做的事情:

ArrayList1.set(5, Arraylist2.get(5)); // Set 5th index of Arraylist1 to 5th of Arraylist2
ArrayList1.set(6, ArrayList2.get(6));

.....

ArrayList1.set(10, ArrayList.get(10));

虽然这确实有效,但它需要大量的代码并且难以阅读。

3 个答案:

答案 0 :(得分:2)

这样的循环怎么样:

int startIndex = 5;
int endIndex = 10;
for(int i = startIndex; i < endIndex; i++){
   arrayList1.set(i, arraylist2.get(i));
   //-------------^-----------------^
}

答案 1 :(得分:0)

参考:

yourOldList.removeRange(fromIndex,toIndex);
yourOldList.addAll(fromIndex,yourNewList);

答案 2 :(得分:0)

对于其他答案,您可以使用Java 8功能流处理此类问题:

arli1.stream().filter( e->(arli1.indexOf( e ) > startIndex && arli1.indexOf( e ) < endIndex)).map( e->arli2.set( arli1.indexOf(e), e ) ).count();

公平地说,对于您的特定问题,可能会有点过头,但它适用于内部迭代,在处理大量数据时执行速度更快。

注意:流的末尾需要 count() 来强制执行流,因为 filter() map() 是&#34;懒惰&#34;操作,需要一个渴望&#34;渴望&#34;操作运行。但是任何其他急切的方法都可以做到这一点。