java - 基于类字段从列表中获取对象的最有效方法是什么
问题描述
我有一个rArrayList
类型,Custome
其中包含字段 suhc asid
和. 目前,要找到具有给定 的客户,我正在遍历整个列表并使用. 但是,这似乎是一项昂贵的操作。name
age
id
getID
public Customer findCustomer(List customers, String id) {
for (Customer customer : customers) {
if (customer.getId().equals("23")
return customer;
}
}
}
解决方案
您可以使代码更加优雅,但它仍然是一个 O(n) 操作,在最坏的情况下仍然会遍历整个列表:
return customers.stream().filter(c -> c.getId().equals(id)).findFirst().orElse(null);
如果您想要一个性能更好的解决方案,您将需要不同的数据结构。从 ID 到客户对象的AMap
将使您能够按 O(1) 操作通过其 ID 检索客户。
推荐阅读
- java - Java fx 更改字符串的颜色
- pandas - Pandas 导出 to_csv() 并在列名周围加上引号
- c++ - 关于堆栈为空的链表堆栈问题
- python - 在 pandas 中链接 melt 和 groupby 会导致整数值转换为布尔值
- python - 用于分割问题的加权二元交叉熵骰子损失
- mysql - 无法读取未定义节点 JS 服务器的属性“长度”
- tfs - 我如何在 VSTS 中将事件网格用于工作项更改事件
- c++ - 迭代器子类单独包含
- python-3.x - 如何使用 sympy 的 nonlinsolve 符号式地找到稳态
- python - DIV 中的元素不可交互(NG-click)Selenium Python .click()