[英]Instanceof - adding new object to a new ArrayList, from a previous ArrayList
[英]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.