簡體   English   中英

使用迭代器遍歷 ArrayList 並使用 instanceof 設置 object

[英]Traversing an ArrayList with an Iterator and setting an object with instanceof

我有一個對象的 ArrayList 和一個遍歷它們的迭代器。 我試圖在列表中找到 Ant object 的實例並將其分配給 ant 變量。

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

由於 iterator.getNext() 在調用時遞增迭代器,因此上述代碼將 ant 之后的 object 分配給 ant 變量。 我想知道如何正確地將列表中的 Ant object 分配給 ant 變量。

您正在調用.getNext()兩次,因此您實際上是在您檢查的那個之后投射 object 。

嘗試這個:

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

還應該注意的是,在迭代器中檢索底層 object 是.next()而不是.getNext()

這個怎么樣?

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

發生這種情況是因為您調用iterator.getNext()兩次:第一次在條件中,然后在條件主體中,所以您錯過了第一個值並嘗試第二次 Ant 類型。 你需要像這樣的代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM