我有两个List<Integer[]>
类型的列表:A.Unassigned
和A.Shanghai
。
我尝试了以下内容:
Iterator<Integer[]> UnassignedIt = A.Unassigned.iterator();
A.Shanghai.add(UnassignedIt.next());
UnassignedIt.remove();
但它提供了NoSuchElementException
:
java.util.AbstractList中的java.util.NoSuchElementException $ Itr.next(未知来源)
[我该如何解决这个问题?]
答案 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可能会有很大帮助。并考虑评论,命名惯例等等。