我有两个整数类型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));
虽然这确实有效,但它需要大量的代码并且难以阅读。
答案 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;操作运行。但是任何其他急切的方法都可以做到这一点。