gpt4 book ai didi

java - SQLite 查询的速度/昂贵与列表行上 "in-set"图标的 List.contains()

转载 作者:行者123 更新时间:2023-11-30 09:55:31 26 4
gpt4 key购买 nike

我正在开发的一个应用程序要求该应用程序在本地“图书馆”中维护本地事物列表,比方说书籍。用户可以访问他们本地的图书馆并使用远程网络服务搜索书籍。该应用程序将通过此 Web 服务了解该应用程序的其他用户,并且用户可以浏览其他用户在其图书馆中的图书列表。每本书都由唯一的 bookId 标识(表示为 int)。

查看通过搜索结果返回的图书或查看其他用户的图书库时,各个列表行单元格需要直观地表示该图书是否在用户的本 map 书馆中。用户最多可以在图书馆中拥有 5,000 本书,存储在设备上的 SQLite 中(并与远程 Web 服务同步)。

我的问题是,要确定列表行中显示的书是否在用户的图书馆中,直接询问 SQLite(通过 SELECT COUNT(*)...)会更好还是在内存中维护一个 Listint[] 数组,其中包含唯一的 bookId

因此,在每一行显示中,我是查询 SQLite 还是检查 Listint[] 数组是否包含唯一的 bookId?因为用户最多可以拥有 5,000 本书,每个 bookId 占用 4 个字节,所以最多使用 ~ 20kB。

在考虑和输入时,我觉得很明显,如果我维护一个列表或 int[] 库内 bookId 数组,性能会好得多与查询 SQLite(维护 int[] 数组的唯一注意事项是,如果添加或删除书籍,我将需要手动增大或缩小数组,因此使用此选项我很可能会使用 ArrayListVector,尽管我不确定使用 Integer 对象而不是基元会产生额外的内存开销。

意见、想法、建议?

最佳答案

首先,对于纯内存解决方案,我可能会使用 HashSet<Integer> HashMap<Integer> .它应该为 contains 提供更好的性能/ containsKey .其次,SQLite有自己的memory caching , 所以你不应该假设它每次都会天真地从磁盘读取。

关于java - SQLite 查询的速度/昂贵与列表行上 "in-set"图标的 List.contains(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com