从大型ArrayList中存储/获取数据

时间:2017-09-21 12:33:22

标签: java android arraylist

我正在构建一个连接到API的应用程序,该API返回大量具有相同模型的列表,并且有许多可能与该模型重复的视图,

所以我想而不是存储需要通知其他列表有关模型中的更改的多个列表,我可以有1个列表,可以通过更改更新并从中获取数据。 在某种程度上,我创建了一个小型数据库,其中一个表将保留在RAM中

我的第一个问题是如果列表变大会成为记忆问题? (目前我将其最大化为700项,在用户端没有问题)

其次我获取数据的方式是不断地在该列表中循环并根据需要进行过滤,这会在列表变大时影响性能吗?

最后这个结构不比Sqllite数据库快吗?

2 个答案:

答案 0 :(得分:2)

从时间为O(1)的funcTwo访问元素会更快。但是迭代它来过滤List会慢得多。如果您需要比较列表中将导致O(N ^ 2)等的元素,这将导致O(N)甚至更糟。

因此,如果您计划快速访问只是将其保留在内存中就可以了,但如果您需要对其进行一些SQL查询,那么您应该选择数据存储解决方案。内置的SQLite存储或类似Realm。

答案 1 :(得分:1)

  如果列表变大,

会成为记忆问题吗? (目前我将其最多限制为700项,用户结束时没有问题)

只要您只是从该列表中读取数据,这不是问题,尤其是现在使用较新的手机。

  

当列表变大时会影响性能吗?

这将是一个问题,迭代超过700项不会成为问题,但如果你开始处理更大的数字5或6位数项,它将开始成为一个问题。

但所有这些都取决于你的物品,所以如果列表中的物品只是文字,那么我会说你可以保持同样的方式。但是如果你的列表开始有图像,更大的文本或更多的数据,那么你应该考虑将这些数据保存在数据库中然后进行处理。