数组列表 按 Id 检索对象
2022-09-01 18:29:52
假设我有一个我的自定义对象,这很简单。例如:ArrayList<Account>
class Account
{
public String Name;
public Integer Id;
}
我想根据应用程序许多部分中的参数检索特定对象。最好的方法是什么?Account
Id
我正在考虑扩展,但我相信一定有更好的方法。ArrayList
假设我有一个我的自定义对象,这很简单。例如:ArrayList<Account>
class Account
{
public String Name;
public Integer Id;
}
我想根据应用程序许多部分中的参数检索特定对象。最好的方法是什么?Account
Id
我正在考虑扩展,但我相信一定有更好的方法。ArrayList
听起来您真正想要使用的是 一个 ,它允许您根据键检索值。如果您坚持 使用 ,则唯一的选择是循环访问整个列表并搜索对象。Map
ArrayList
像这样:
for(Account account : accountsList) {
if(account.getId().equals(someId) {
//found it!
}
}
对
accountsMap.get(someId)
这种操作位于 . vs 中。O(1)
Map
O(n)
List
我正在考虑扩展ArrayList,但我相信一定有更好的方法。
Java解决方案:
Account account = accountList.stream().filter(a -> a.getId() == YOUR_ID).collect(Collectors.toList()).get(0);
Kotlin 解决方案 1:
val index = accountList.indexOfFirst { it.id == YOUR_ID }
val account = accountList[index]
Kotlin 解决方案 2:
val account = accountList.first { it.id == YOUR_ID }