Как заменить существующее значение новым - PullRequest
0 голосов
/ 24 октября 2019

если имя уже существует, тогда я хочу заменить значение NetWOrth для этого конкретного человека без повторения старого значения.

Я пытался сделать это, просматривая список, но он дает мне повторную запись.

List<Celebrity> list = new CopyOnWriteArrayList<Celebrity>();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");

    Celebrity cl = new Celebrity("Frank", "Sinatra", "franks.inatra@smoothjazz.com", 1000000.00);
    Celebrity c2 = new Celebrity("Michal", "Jackson", "king of pop@mtv.com", 1000000000.00);
    Celebrity c3 = new Celebrity("Aaron", "Hoffman", "jamsonreal@smoothjazz.com", 10000.00);

    list.add(cl);
    list.add(c2);
    list.add(c3);

    String firstName = request.getParameter("first");
    String lastName = request.getParameter("last");
    String email = request.getParameter("email");
    double netWorth = Double.parseDouble(request.getParameter("netWorth"));


    for (int i = 0; i < list.size(); i++) {
        if (list.get(i).getEmail().equalsIgnoreCase(firstName)) {
            list.get(i).setNetWorth(netWorth);
        }

        if (!list.get(i).getFirstName().equalsIgnoreCase(firstName)) {
            list.add(new Celebrity(firstName, lastName, email, netWorth));
            break;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Я думаю, что ваш код очень запутанный, но, похоже, «перерыв» расположен не в нужном месте. Если вы хотите обновить свойство (уф, мне не нравятся изменяемые объекты, но это мое мнение), а затем остановите, просто переместите «break» на первое «if»

if (list. получить (я) .getEmail (). equalsIgnoreCase (FirstName))

0 голосов
/ 24 октября 2019

Я не понимаю, почему вы сравниваете электронную почту с именем:

 ...
        if (list.get(i).getEmail().equalsIgnoreCase(firstName)) {
         ...

, и это может быть решением вашей проблемы, если я правильно понял:

  for(Celebrity  ce:list){
  if (ce.getFirstName().trim().equalsIgnoreCase(firstName.trim()) &&ce.getNetworth!=netWorth){
    ce.setNetworth(networth);
    break;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...