基于类的字段从列表中获取对象的最有效方法是什么

时间:2018-09-22 17:17:41

标签: java list arraylist collections

我有一个类型为ArrayList r的Custome,其中包含字段suhc为idnameage。 当前,要查找具有给定id的客户,我正在遍历整个列表并使用getID。但是,这似乎是一项昂贵的操作。

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

1 个答案:

答案 0 :(得分:1)

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

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

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