我有一只兔子的Arraylist。
每只兔子都有String
名称和String[]
信息。
rabbit(String name, String[] informations)
我将这些兔子放在ArrayList
中,我们称之为兔子列表。
我想制作一个类似的方法:
public void removerabbit(String name)
我必须做一些while循环我猜或每个循环得到名称。 我创建了一个访问器getName(),它给出了一个兔子的名字。 只是有问题包围我的大脑来弄清楚如何。应该很简单。
答案 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);
}
这可能会有一些变化......