方法错误 - 使用Iterator交织List

Mic*_*tin 2 java iterator list

我创建了一个方法,它应该交织两个列表对象并返回新的,编织后的列表.

即如果aList是[A,C,E,G]并且bList是[B,D,F],则该方法将返回包含[A,B,C,D,E,F,G]的列表

没有编译器错误,当我运行程序时,返回的List为空.我已经发现该程序没有进入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;
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*you 6

我相信这可以用一种更简单的方式来完成,使用while(iterator.hasNext())成语:

itrA = a.iterator();
itrB = b.iterator(); 

while (itrA.hasNext() || itrB.hasNext()) {
  if (itrA.hasNext())
      newList.add(itrA.next());
  if (itrB.hasNext())
      newList.add(itrB.next());
}
Run Code Online (Sandbox Code Playgroud)