gpt4 book ai didi

java - 从数组列表中删除具有特定属性的对象

转载 作者:行者123 更新时间:2023-12-01 12:00:38 25 4
gpt4 key购买 nike

我有一个具有三个属性的客户对象:姓氏、名字和 SIN 号

如果用户输入客户的姓氏和名字,并且在数组列表中找到该对象,则该对象将被删除。

private static void deleteCustomer (String lastName, String firstName, List<Customer> accounts)
{
for (int i = 0; i < accounts.size(); i++)
{
accounts.get(i);
public int compare (Customer c1, Customer c2)
{
Customer customerOne = (Customer) c1;
Customer customerTwo = (Customer) c2;
if (lastName.equals(CustomerOne.getLastName()) && firstName.equals(CustomerOne.getFirstName()))
{

}
}
}
}

如果两个客户的名字和姓氏相同,系统会要求用户输入 SIN 号码,这就是我使用比较方法的原因。我不知道此后该做什么。

更新方法:

public static void deleteCustomer (String lastName, String firstName, List<Customer> accounts)
{
for (Iterator<Customer> iterator = accounts.iterator(); iterator.hasNext();)
{
Customer customer = iterator.next();
if(lastName.equals(customer.getLastName()) && firstName.equals(customer.getFirstName()))
{
iterator.remove();
}
}
}

这可行,但会删除具有相同名字和姓氏的所有客户

最佳答案

如果您只想删除一个客户(如问题中所述),您应该在找到正确的客户并将其删除后打破循环:

iterator.remove();
break; // breaks the loop

但是,由于似乎可能有多个客户具有相同的名字+姓氏,因此该算法并不完全安全。也许应该使用客户 ID 或类似的名称来区分客户。对于客户 ID,要使用的数据结构很可能是 Map<CustomerId, Customer> 。然后可以通过 ID 快速访问客户,并且您仍然可以通过调用 values() 来检索所有客户的集合。方法。

除此之外,如果不想修改原来的List您还可以使用 Java 8 构造,其中 stream , filtercollect您的数据。

final List<Customer> newAccountList = accounts.stream()
.filter(c -> !(Objects.equals(c.getFirstName(), firstName) &&
Objects.equals(c.getLastName(), lastName)))
.collect(Collectors.toList());

List以上包含原始 List 中的所有内容除了名字+姓氏匹配的条目之外。

关于java - 从数组列表中删除具有特定属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com