Добавить и обновить новые элементы в массиве - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь проверить массив адресов, содержащий элемент (знаменитость), для адреса электронной почты, введенного пользователем, тогда, если он находится в списке, он будет обновлен, но если не будет создан новый экземпляр. Проблема, с которой я столкнулся, заключается в следующем: когда я вводю новую знаменитость, она отображает дубликаты записей.

Выход:

[
    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 голосов
/ 26 октября 2018

Вы добавляете новую знаменитость в свой список для каждой итерации вашего чека.

Всегда пишите код так, как вы бы объяснили его кому-то другому. Таким образом, правильный (псевдо) код становится:

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