我创建了一种方法,该方法应交织两个列表对象并返回新的交织的列表。

即,如果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;
}

最佳答案

我相信可以使用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());
}

关于java - 方法错误-使用迭代器交织列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32719860/

10-11 20:34