Какой самый эффективный способ получения объектов из списка на основе поля класса - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть ArrayList типа Custome r, который содержит поля типа id, name и age.В настоящее время, чтобы найти клиента с данным id, я перебираю весь список и использую getID.Тем не менее, это, кажется, дорогая операция.

public Customer findCustomer(List customers, String id) {
    for (Customer customer : customers) {
        if (customer.getId().equals("23")
                return customer;
        }
    }
}

1 Ответ

0 голосов
/ 22 сентября 2018

Вы могли бы сделать код намного более элегантным, но это все равно будет операция O (n), которая в худшем случае все равно будет проходить по всему списку:

return customers.stream().filter(c -> c.getId().equals(id)).findFirst().orElse(null);

Если вы хотите лучшеДля выполнения решения вам потребуется другая структура данных.Map от идентификатора к объекту клиента позволит вам получить клиента по его идентификатору в виде операции O (1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...