首页 > 解决方案 > 使用 Iterator 遍历 ArrayList 并使用 instanceof 设置对象

问题描述

我有一个对象的 ArrayList 和一个遍历它们的迭代器。我试图在列表中找到 Ant 对象的实例并将其分配给 ant 变量。

while(iterator.hasNext()) {
    if(iterator.getNext() instanceof Ant) {
        Ant ant = (Ant)iterator.getNext();
    }
}

由于 iterator.getNext() 在调用时会递增迭代器,因此上面的代码将 ant 之后的对象分配给 ant 变量。我想知道如何正确地将列表中的 Ant 对象分配给 ant 变量。

标签: javaarraylistiterator

解决方案


你调用.getNext()了两次,所以你实际上是在你检查的对象之后投射对象。

尝试这个:

while(iterator.hasNext()) {
  Object obj = iterator.next();
  if (obj instanceof Ant) {
    Ant ant = (Ant)obj;
  }
}

另外需要注意的是,它.next()不是.getNext()在迭代器中检索底层对象。


推荐阅读