向 arraylist 添加和更新新元素

Add and update new elements to an arraylist

我正在尝试检查一个数组列表,其中包含用户输入的电子邮件地址的元素(名人),如果它在列表中,它将被更新,但如果不在列表中,则会创建一个新实例。我遇到的问题是:当我输入一个新的名人时,它会显示重复的条目。

输出:

[
    Celebrity [firstName=Frank, lastName=Sinatra, netWorth=1000000.0, email=frank.sinatra@smoothjazz.com], 
    Celebrity [firstName=Michael, lastName=Jackson, netWorth=1.0E9, email=king_of_pop@mtv.com], 
    Celebrity [firstName=Aaron, lastName=Hoffman, netWorth=10000.0, email=iamsonreal@iamsonreal.com], 
    Celebrity [firstName=new, lastName=new, netWorth=900.0, email=new@y.com], 
    Celebrity [firstName=new, lastName=new, netWorth=900.0, email=new@y.com], 
    Celebrity [firstName=new, lastName=new, netWorth=900.0, email=new@y.com]
]

if (celeb.getEmail().contains(request.getParameter("email"))) { 
    celeb.setNetWorth(Double.parseDouble((request.getParameter("netWorth"))));  
} else {
    Celebrity cel = new Celebrity(request.getParameter("firstName"),
            request.getParameter("lastName"), request.getParameter("email"),
            Double.parseDouble(request.getParameter("netWorth")));
    celebrityList.add(cel);
}

https://repl.it/repls/FumblingOrderlyEllipses(完整代码)

您每次检查都会在列表中添加一位新名人。

始终按照您向其他人解释代码的方式编写代码。所以正确的(伪)代码变成:

if (emailExistsInList(data.email))
  updateExistingCeleb(data);
else
  addNewCeleb(data);

...

boolean emailExistsInList(String email){
  for (Celebrity celeb: celebs)
    if (celeb.email.equals(email)) return true;
  }
}

void updateExistingCeleb(String email, CelebData data){
  // your search and update code here 
}

void addNewCeleb(CelebData data){
  Celeb newCeleb = // your instantiation logic here
  celebs.add(newCeleb);
}