我有一个类型为ArrayList
r的Custome
,其中包含字段suhc为id
,name
和age
。
当前,要查找具有给定id
的客户,我正在遍历整个列表并使用getID
。但是,这似乎是一项昂贵的操作。
public Customer findCustomer(List customers, String id) {
for (Customer customer : customers) {
if (customer.getId().equals("23")
return customer;
}
}
}
答案 0 :(得分:1)
您可以使代码更加优雅,但它仍然是O(n)操作,在最坏的情况下仍会遍历整个列表:
return customers.stream().filter(c -> c.getId().equals(id)).findFirst().orElse(null);
如果您想要一个性能更好的解决方案,则需要一个不同的数据结构。从ID到客户对象的Map
将使您能够通过其ID作为O(1)操作来检索客户。