Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLITE搜索与ArrayList搜索用于少量数据集_Android_Sqlite_Search_Optimization_Arraylist - Fatal编程技术网

Android SQLITE搜索与ArrayList搜索用于少量数据集

Android SQLITE搜索与ArrayList搜索用于少量数据集,android,sqlite,search,optimization,arraylist,Android,Sqlite,Search,Optimization,Arraylist,假设,在我的应用程序中,我有一个sqlite表,最多可以包含20行。每行有2列(id、名称)。我经常需要按Id搜索以获取名称。对于这种频繁的需求,我有两种解决方案: 解决方案1:获取数组列表中的行,然后从数组中查找名称 解决方案2:每次搜索sqlite表时 现在请给出你的意见哪一个更好? 再次记住,我需要在我的recycleView项目中进行此搜索,因此它会频繁调用 谢谢我真的不知道你的真正意图是什么,但如果你的任务是经常按id搜索,我会使用 LongSparseArray<String&

假设,在我的应用程序中,我有一个sqlite表,最多可以包含20行。每行有2列(id、名称)。我经常需要按Id搜索以获取名称。对于这种频繁的需求,我有两种解决方案:

解决方案1:获取
数组列表中的行
,然后从数组中查找名称

解决方案2:每次搜索sqlite表时

现在请给出你的意见哪一个更好? 再次记住,我需要在我的recycleView项目中进行此搜索,因此它会频繁调用


谢谢

我真的不知道你的真正意图是什么,但如果你的任务是经常按id搜索,我会使用

LongSparseArray<String> idsToNames; // or LongSparseArray<Model>
LongSparseArray idsToNames;//或长解析数组
它将以比
map
更高效的方式将原语long映射到字符串,并且在搜索时比
ArrayList
具有更好的性能

在这里查询SQLite的优点是,您可以以阻塞方式进行,而不必每次运行查找时都在后台线程上查询数据库


缺点是,每当SQLite中的数据发生更改时,都必须重新生成idsToNames映射。此外,如果SQLite中的条目数量最终会增加,那么最终将成为一个大型集合。因此,只有在本次会话期间不会对数据库进行更新,并且数据大小始终是可预测或固定的情况下,我才建议使用这种方法。

我并不真正了解您的真正意图,但如果您的任务是经常按id搜索,我会使用

LongSparseArray<String> idsToNames; // or LongSparseArray<Model>
LongSparseArray idsToNames;//或长解析数组
它将以比
map
更高效的方式将原语long映射到字符串,并且在搜索时比
ArrayList
具有更好的性能

在这里查询SQLite的优点是,您可以以阻塞方式进行,而不必每次运行查找时都在后台线程上查询数据库


缺点是,每当SQLite中的数据发生更改时,都必须重新生成idsToNames映射。此外,如果SQLite中的条目数量最终会增加,那么最终将成为一个大型集合。因此,只有在本次会话期间不会对数据库进行更新,并且数据大小始终是可预测的或固定的情况下,我才建议使用这种方法。

数据大小是固定的。所以LongSparseArray比SQLITE查询更适合这个上下文?@ShohanAhmedSijan如果你说你会经常搜索,那么我会说是的。但你真正的任务是什么?例如,如果您真正的任务是打开详细信息屏幕,我会将id传递到详细信息屏幕并在那里加载模型。是的,这只是一个查看屏幕,每个项目都需要按id显示名称。非常感谢您宝贵的回答。:)@ShohanAhmedSijan“无休止的回收利用回顾”?仅针对20个项目?@ShohanAhmedSijan因此,当您的数据来自sqlite查询时,为什么不使用基于
游标的适配器(类似于
游标适配器
用于“正常”的
列表视图
)?数据大小是固定的。所以LongSparseArray比SQLITE查询更适合这个上下文?@ShohanAhmedSijan如果你说你会经常搜索,那么我会说是的。但你真正的任务是什么?例如,如果您真正的任务是打开详细信息屏幕,我会将id传递到详细信息屏幕并在那里加载模型。是的,这只是一个查看屏幕,每个项目都需要按id显示名称。非常感谢您宝贵的回答。:)@ShohanAhmedSijan“无休止的回收利用回顾”?仅针对20个项目?@ShohanAhmedSijan因此,当您的数据来自sqlite查询时,为什么不使用基于
游标的适配器(类似于
游标适配器
,用于“普通”的
列表视图
)?您是否在recycleView中显示所有20个数据?不。我有一个无休止的recycleView。在该recycleview的每个项目上,都需要从这个20数据集表中按Id命名@你是否在recycleView中显示全部20个数据?不。我有一个无休止的recycleView。在该recycleview的每个项目上,都需要从这个20数据集表中按Id命名@阿贾什雷斯塔