如何在将列表添加到Java中的另一个列表时从列表中删除该元素?

时间:2012-10-02 06:26:13

标签: java list

我有两个List<Integer[]>类型的列表:A.UnassignedA.Shanghai

我尝试了以下内容:

Iterator<Integer[]> UnassignedIt = A.Unassigned.iterator();
A.Shanghai.add(UnassignedIt.next());
UnassignedIt.remove();

但它提供了NoSuchElementException

  

java.util.AbstractList中的java.util.NoSuchElementException $ Itr.next(未知来源)

[我该如何解决这个问题?]

2 个答案:

答案 0 :(得分:3)

检查此代码:

  

列表listA = new ArrayList();           listA.add(1);           listA.add(2);           listA.add(3);

    List<Integer> listB = new ArrayList<Integer>();

    Iterator<Integer> iterator = listA.iterator();
    while(iterator.hasNext()){
        Integer obj = iterator.next();
        listB.add(obj);
        iterator.remove();
    }

如果您尝试访问的列表(使用java.util.NoSuchElementException)为空,则会发生iterator.next()。因此,在执行此操作之前,请更好地检查iterator.hasNext()

答案 1 :(得分:2)

在调用next()之前检查迭代器是否有下一个项目:

Iterator<Integer[]> it = A.Unassigned.iterator();
while (it.hasNext()) {
    Integer intArray = it.next();
    A.Shanghai.add(intArray);
    it.remove();
}

此外,documentation可能会有很大帮助。并考虑评论,命名惯例等等。