我想添加和從一個對象的集合在相同的循環但在不同的方法中刪除,我的問題是添加和刪除後,我嘗試打印我的數組列表,但我不能得到最近添加的值。我使用ListIterator添加和刪除Iterator,因爲我在一堆網站閱讀,這是唯一的方法來添加和刪除,並且更改將直接發生在arraylist中,但我的問題是,它是添加和刪除並且調試器上的ArrayList計數或參考編號看起來很好,但是當我搜索它時,我無法找到新的。添加對象,我仍然可以找到已刪除的對象。 這是刪除和添加方法Java ArrayList創建,編輯和刪除
public void RemoveFromAnimalList(Animal A) {
Iterator<Animal> i = AnimalList.iterator();
while (i.hasNext()) {
if (A == i.next()) {
i.remove();
}
}
}
public boolean AddNewAnimalList(Animal A) {
ListIterator litr = AnimalList.listIterator();
Animal B = null;
while (litr.hasNext()) {
B = (Animal) litr.next();
litr.add(A);
return true;
}
return false;
}
這是調用上面這些方法的方法和我已經試過各種調試一切,每次我找不到eventhough ArrayList中數新增加元素的外觀看起來不錯,我有400對象,當我刪除它達到399,然後再次當我添加它回到400,但是當我嘗試打印並通過對象我不能找到新的。
public void FirstBirth() {
TheXYAxisControl XYSave = null;
int X = 0;
int Y = 0;
for (Animal A : AnimalList) {
if (A.Type.equals("Empty")) {
X = A.XAxis;
Y = A.YAxis;
XYSave = new TheXYAxisControl(X, Y);
TheXYaxisArrayList.add(XYSave);
}
}
Random RandomNumberGen = new Random();
for (int s = 0; s < 3; s++) {
int RandomNumberGenerator = RandomNumberGen.nextInt(TheXYaxisArrayList.size());
Animal NewAnimal = new Animal(0, "Male", 0, TheXYaxisArrayList.get(RandomNumberGenerator).getX(), TheXYaxisArrayList.get(RandomNumberGenerator).getY(), 0);
RemoveFromAnimalList(AnimalList.get(RandomNumberGenerator));
AddNewAnimalList(NewAnimal);
RemoveFromOtherList(TheXYaxisArrayList.get(RandomNumberGenerator));
}
int RandomNumberGenerator = RandomNumberGen.nextInt(TheXYaxisArrayList.size());
Animal NewAnimal = new Animal(0, "Female", 0, TheXYaxisArrayList.get(RandomNumberGenerator).getX(), TheXYaxisArrayList.get(RandomNumberGenerator).getY(), 0);
RemoveFromAnimalList(AnimalList.get(RandomNumberGenerator));
AddNewAnimalList(NewAnimal);
RemoveFromOtherList(TheXYaxisArrayList.get(RandomNumberGenerator));
}
如果您有任何問題或其他部分代碼,我可以解釋。
作爲供參考您的方法和變量名稱應該以小寫字母開頭,它有助於區分它們與對象。 – 2012-02-01 14:21:28
爲什麼不使用arraylist的remove方法呢? – thatidiotguy 2012-02-01 14:17:52