我有从 JSON 解析的 POJO。
Account [] accounts;
class Account {
Integer number;
String name;
String location;
Date started;
}
我从 JSON API 调用获取帐户列表。 Jackson 映射器将生成的 JSON 映射到上面的 POJO。 我需要对这些对象进行搜索和其他操作。
我不知道如何存储这些来进行搜索并显示它们(在 Android 中)。
ArrayList
Map
HashTable
...
等等。搜索应该很快。我平均拥有大约 500 个帐户。映射已完成,我现在将对象放在数组中。但不知道如何从这里开始。
此外,我对 Java 集合和泛型相当陌生。因此任何带有方向的代码示例都会有所帮助。
谢谢!
最佳答案
五百个帐户实际上并不是一个巨大的数字,如果您的应用程序很小并且很少使用(这意味着它不是一个具有数千个同时查询的网络服务),您也许可以摆脱线性搜索。
假设情况并非如此,而且这似乎是一个不错的假设,您应该为那些您希望经常查询的字段构建索引。如果您主要搜索名称,您可以使用名称的小写版本构建一个 HashMap
nameIndex = new HashMap<String, Account>();
for (Account a : accountArray) {
nameIndex.put(a.name.toLowerCase(), a);
}
然后,对于“确切名称”搜索,您将搜索查询小写,然后调用 nameIndex.get
。
也可以按日期搜索,但在这里我希望您按日期范围搜索。在这种情况下,您可能想要构建排序列表索引或树索引。然后,您可以导航列表或树以找到所需的范围。
您还可以通过名称正则表达式或我的名字邻近度(二元组、三元组)进行查找,有很多选项。
顺便说一句,数据库在这种事情上做得很好。您可能会考虑只填充嵌入式数据库,例如 H2 ,尽管这可能有点过分了?不过,学习很有趣。除了数据库之外,您还可以免费获得并发控制和缓存!
TL;DR:为您将经常使用的查询构建 HashMap 或树形图或普通排序列表索引,并对复杂的自定义查询进行线性搜索。或者,这可能是首选:使用嵌入式数据库。
关于java - 存储 POJO 数组 - java 中更好的选择是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12469108/