从ArrayList Java中删除项目..需要访问者

时间:2011-12-03 11:44:05

标签: java arraylist

我有一只兔子的Arraylist。 每只兔子都有String名称和String[]信息。

rabbit(String name, String[] informations)

我将这些兔子放在ArrayList中,我们称之为兔子列表。

我想制作一个类似的方法:

public void removerabbit(String name)

我必须做一些while循环我猜或每个循环得到名称。 我创建了一个访问器getName(),它给出了一个兔子的名字。 只是有问题包围我的大脑来弄清楚如何。应该很简单。

3 个答案:

答案 0 :(得分:1)

如果Rabbit的名称是Rabbit的唯一标识符,则可以覆盖equals的{​​{1}}方法,仅检查名称。在这种情况下,Rabbit方法变得非常简单,因为removeRabbit的内置删除方法使用equals方法来确定要删除的元素。

ArrayList

如果不可能,您可以遍历列表。以下代码将删除具有指定名称的所有Rabbits。如果您只想删除第一只兔子,则应在移除第一只兔子后停止循环。

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 ) ); 
}

答案 1 :(得分:0)

您需要java.util.Iterator才能在List

上的迭代过程中删除项目
Iterator<Rabbit> it = rabbits.iterator();
String nameForRemove = "rabbitName";
while(it.hasNext()) {
    if(it.next().getName().equals(nameForRemove)) it.remove();
}

答案 2 :(得分:0)

你必须通过rabbitList迭代才能找到具有给定名称的兔子。获取其在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);
}

这可能会有一些变化......