我正在尝试检查包含元素(名人)的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);
}
答案 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);
}