0

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

我尝试了以下方法:

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

但它给出了一个NoSuchElementException

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

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

4

2 回答 2

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()之前是否这样做。

于 2012-10-02T06:32:12.713 回答
2

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

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

此外,文档可能会有很大帮助。并考虑评论、命名约定等。

于 2012-10-02T06:40:49.367 回答