假设我有一个 ArrayList<Account>
我的自定义对象,这非常简单。例如:
class Account
{
public String Name;
public Integer Id;
}
我想在我的应用程序的许多部分中基于 Id
参数检索特定的 Account
对象。解决这个问题的最佳方法是什么?
我正在考虑扩展 ArrayList
但我相信一定有更好的方法。
原文由 Madhur Ahuja 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我有一个 ArrayList<Account>
我的自定义对象,这非常简单。例如:
class Account
{
public String Name;
public Integer Id;
}
我想在我的应用程序的许多部分中基于 Id
参数检索特定的 Account
对象。解决这个问题的最佳方法是什么?
我正在考虑扩展 ArrayList
但我相信一定有更好的方法。
原文由 Madhur Ahuja 发布,翻译遵循 CC BY-SA 4.0 许可协议
解决方案:
Account account = accountList.stream().filter(a -> a.getId() == YOUR_ID).collect(Collectors.toList()).get(0);
科特林解决方案 1:
val index = accountList.indexOfFirst { it.id == YOUR_ID }
val account = accountList[index]
科特林解决方案 2:
val account = accountList.first { it.id == YOUR_ID }
原文由 Ahamadullah Saikat 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
听起来您真正想要使用的是
Map
,它允许您根据键检索值。如果你坚持ArrayList
,你唯一的选择是遍历整个列表并搜索对象。就像是:
相对
这种操作是
O(1)
O(n)
AMap
List
一般来说,这是糟糕的设计。阅读 Effective Java Item 16 以更好地理解原因——或者查看这篇 文章。