【发布时间】:2015-12-19 14:34:54
【问题描述】:
我创建了一个方法,该方法应该交织两个列表对象并返回新的交织列表。
即如果 aList 是 [A,C,E,G] 并且 bList 是 [B, D, F],则该方法将返回一个包含 [A, B, C, D, E, F, G] 的列表
没有编译器错误,当我运行程序时,返回的列表为空。我发现程序没有进入 for 循环,因为由于某种原因,当我创建 newList 它的大小为 0。
代码如下:
public static <E> List<E> interweave(List<E> a, List<E> b){
List<E> newList = new ArrayList<E>(a.size() + b.size());
Iterator<E> itrA = a.iterator();
Iterator<E> itrB = b.iterator();
for(int i = 0; i < newList.size(); i++){
if(i%2 == 0)
newList.add(i, itrA.next());
else
newList.add(i, itrB.next());
}
return newList;
}
【问题讨论】:
-
构造函数
new ArrayList(size)确实分配了一个具有您定义的大小的新数组。但是ArrayList#size不返回数组的长度,它返回一个变量size,它在操作List后发生了变化。创建新的ArrayList后,大小还是0。 -
谢谢你!这正是我需要知道的!因此,当我使用
new ArrayList()然后在for循环中使用a.size() + b.size()的值时,它可以完美运行。