【发布时间】:2014-02-05 20:32:15
【问题描述】:
有一个ArrayList<Integer> al,我想将它的前半部分元素复制到另一个ArrayList<Integer> firstHalf。 (如果 al 有奇数个元素,firstHalf 应该还有一个元素。)但是,下面的代码会抛出一个IndexOutOfBoundsException,并说Index: 0, Size: 0,虽然我不确定这会是什么问题,因为 ArrayLists 的索引从 0 开始。另外,我知道 .arraycopy,但我想用 for 循环这样做。
int x = al.size()/2 + (al.size()%2) - 1;
for(int i = 0; i < x; i++){
firstHalf.set(i, al.get(i));
}
【问题讨论】:
-
考虑使用
subList。 -
@SotiriosDelimanolis 注意:
subList()返回原始列表的“视图”,而不是副本。所以你需要firstHalf = new ArrayList(al.subList(0, newSize));