向 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);
}
您每次检查都会在列表中添加一位新名人。
始终按照您向其他人解释代码的方式编写代码。所以正确的(伪)代码变成:
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);
}
我正在尝试检查一个数组列表,其中包含用户输入的电子邮件地址的元素(名人),如果它在列表中,它将被更新,但如果不在列表中,则会创建一个新实例。我遇到的问题是:当我输入一个新的名人时,它会显示重复的条目。
输出:
[
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);
}
您每次检查都会在列表中添加一位新名人。
始终按照您向其他人解释代码的方式编写代码。所以正确的(伪)代码变成:
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);
}