2011-12-03 38 views
0

我有一個兔子Arraylist。 每隻兔子有一個String名稱和一個String[]的信息。從ArrayList Java刪除項目需要一個訪問器

rabbit(String name, String[] informations) 

我有這些兔子在ArrayList,我們稱之爲rabbitlist。

我希望做一個類似的方法:

public void removerabbit(String name) 

我必須做出某種while循環我猜或每個循環得到了名字。 我做了一個訪問器getName(),它提供了一個兔子的名字。 只是有問題纏繞我的大腦,弄清楚如何。應該很簡單。

+0

幫助所有,我會建議你包括'兔'代碼 – Kowser

回答

1

當你的Rabbit的名稱是Rabbit一個唯一的標識符,可以覆蓋的Rabbitequals方法只檢查名稱。在這種情況下,removeRabbit方法變得非常簡單,因爲ArrayList的內置移除方法使用equals方法來確定要移除哪個元素。

public void removeRabbit(String rabbitName){ 
    //just create a new Rabbit with rabbitName as name, 
    //and remove it from the list 
    rabbitList.remove(new Rabbit(rabbitName)); 
} 

如果這是不可能的,你可以迭代列表。以下代碼將刪除具有指定名稱的所有Rabbit。如果你只想刪除第一隻兔子,那麼一旦你移除了第一隻兔子,你應該停止循環。

public void removeRabbit(String name){ 
    Iterator<Rabbit> rabbitIterator = rabbitList.iterator(); 
    while (rabbitIterator.hasNext()) { 
    Rabbit next = rabbitIterator.next(); 
    if (name.equals(next.getName())){ 
     rabbitIterator.remove(); 
    } 
    } 
} 
+0

你可以解釋迭代? 我知道while循環和句子。 – Swupper

+0

http://en.wikipedia.org/wiki/Iterator很好地解釋了Iterator的概念 – Robin

+0

@Swupper - 聽起來您需要花時間閱讀Oracle Java教程...或者一本好的Java教科書。 –

0

你需要java.util.Iterator中能夠對列表進行迭代過程中刪除項

Iterator<Rabbit> it = rabbits.iterator(); 
String nameForRemove = "rabbitName"; 
while(it.hasNext()) { 
    if(it.next().getName().equals(nameForRemove)) it.remove(); 
} 
0

你將不得不遍歷通rabbitList找到兔子給name.Get其對rabbitList指數,並從rabbitList 刪除您的代碼應該是這樣的,

public boolean removeRabbit(String name){ 
Rabbit rabbit; 
Iterator it = rabbitList.iterator(); 
while (it.hasNext()) { 
    rabbit=it.next(); 
    if(name.equals(rabbit.getName()){  
     int index =rabbitList.indexOf(rabbit); 
     //remove rabbit at this index,returns boolean 
     return rabbitList.remove(index); 
     } 
    } 
return false; 
} 

這將工作可能是有了一些變化......

編輯:

public boolean removeRabbit(String name){ 
Rabbit rabbit; 
int index; 
Iterator it = rabbitList.iterator(); 
while (it.hasNext()) { 
    rabbit=it.next(); 
    if(name.equals(rabbit.getName()){  
     index =rabbitList.indexOf(rabbit); 
     } 
    } 
//remove rabbit at this index,returns boolean 
return rabbitList.remove(index); 
} 

這將工作可能會有一些變化...

+0

迭代時,您不應該從列表中刪除元素。將其從迭代器中移除 – Robin

+0

@Robin:迭代時爲什麼不能刪除? –

+0

請參閱http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html#remove() – Robin

相關問題