我使用这个方法搜索Person类型的数组列表,并根据名字删除一个特定的数组。
它工作正常。
但它只删除了一个人,然后就停止了。
public void deleteFriend(String firstName){
Person friendToDelete = null;
for(Person f : friendsList){
if(f.getFirstName().equalsIgnoreCase(firstName)){
friendToDelete = f;
}
}
if(friendToDelete != null){
friendsList.remove(friendToDelete);
System.out.println("Friend deleted.");
}
}
假设我的列表friendsList
中有两个名字为Shane
的人,我希望我的方法删除*allShanes *。
我尝试了以下方法:
public void deleteFriend(String firstName){
//Person friendToDelete = null;
for(Person f : friendsList){
if(f.getFirstName().equalsIgnoreCase(firstName)){
friendsList.remove(f);
continue;
}
}
}
在上面的例子中,我尝试了if
循环的一些变体。首先,我尝试了break;
而不是continue;
。我还尝试了完全删除该行。
if(f.getFirstName().equalsIgnoreCase(firstName))
friendsList.remove(f);
它仍然只删除了第一个谢恩。
我尝试设置一个条件来检查是否存在名为Shane
的Person
示例,如果为真,则遍历包含for(Person f : friendsList)
的列表并将其删除,然后检查是否仍存在Shane,并再次执行此操作。
但我能感觉到我的方法行不通:
public void deleteFriend(String firstName){
//Person friendToDelete = null;
for(Person f : friendsList){
int cond = 0;
while(cond == 0){
if(f.getFirstName().equalsIgnoreCase(firstName)){
friendsList.remove(f);
}
else{
// ??? cond = 1?
}
}
}
}
有人能帮我做我想做的事情或者给我指出正确的方向吗?
2条答案
按热度按时间ogq8wdun1#
您可以使用Java 8方法
Collection.removeIf()
(预期为Predicate
)来执行此操作,并使您的代码更加简单。要根据特定条件对列表执行删除操作,只需执行以下操作:
下面是关于它的一些详细信息:操作和移除项目- Collection.removeIf
yv5phkfx2#
实现这一点的一种方法是使用索引遍历朋友列表,如下所示:
正如在这个Geeks for Geeks页面中所看到的。检查它的其他选项,如过滤您的列表(这是更简单和更快)。