向数组列表添加和更新新元素

时间:2018-10-26 01:09:35

标签: java html eclipse java-ee enterprise

我正在尝试检查包含元素(名人)的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(完整代码)

1 个答案:

答案 0 :(得分:1)

您要为清单的每次迭代将新的名人添加到列表中。

始终以您向他人解释的方式编写代码。因此正确的(伪)代码变为:

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