首页 > 解决方案 > 基于类字段从列表中获取对象的最有效方法是什么

问题描述

我有一个rArrayList类型,Custome其中包含字段 suhc asid和. 目前,要找到具有给定 的客户,我正在遍历整个列表并使用. 但是,这似乎是一项昂贵的操作。nameageidgetID

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

标签: javalistarraylistcollections

解决方案


您可以使代码更加优雅,但它仍然是一个 O(n) 操作,在最坏的情况下仍然会遍历整个列表:

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

如果您想要一个性能更好的解决方案,您将需要不同的数据结构。从 ID 到客户对象的AMap将使您能够按 O(1) 操作通过其 ID 检索客户。


推荐阅读