Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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
Java 从数据库获取数据与从哈希映射获取数据_Java_Android_Sqlite_Hashmap - Fatal编程技术网

Java 从数据库获取数据与从哈希映射获取数据

Java 从数据库获取数据与从哈希映射获取数据,java,android,sqlite,hashmap,Java,Android,Sqlite,Hashmap,在我的安卓*项目*中,我必须跟踪产品特定数量产品的详细信息。这些产品的所有数据都存储在SQLite数据库中。我可以在SQLite中使用select和update来跟踪产品对象。因此,我可以在更改产品详细信息时存储它们。 此外,我还可以在开始时将所有产品加载到哈希映射或类似的数据结构中,并跟踪这些产品对象。 对我来说,最重要的是哪一个更高效和更高效。有人能帮我吗。谢谢大家! 这取决于产品的数量。哈希映射驻留在RAM中,数据库驻留在磁盘上 这还取决于每秒查询的数量和查询的性质。数据库开发人员投入了大

在我的安卓*项目*中,我必须跟踪产品特定数量产品的详细信息。这些产品的所有数据都存储在SQLite数据库中。我可以在SQLite中使用selectupdate来跟踪产品对象。因此,我可以在更改产品详细信息时存储它们。 此外,我还可以在开始时将所有产品加载到哈希映射或类似的数据结构中,并跟踪这些产品对象。
对我来说,最重要的是哪一个更高效和更高效。有人能帮我吗。谢谢大家!

这取决于产品的数量。哈希映射驻留在RAM中,数据库驻留在磁盘上

这还取决于每秒查询的数量和查询的性质。数据库开发人员投入了大量精力来支持索引和筛选;如果你需要,重复使用比重新发明要好

无论您选择哪种方法,都必须记住,Android应用程序进程可能会在任何时候被终止(例如,当另一个进程需要内存时),并且您的代码保证只接收onPause()(而不是onDestroy()或onStop(),请参见活动生命周期)。如有必要,应用程序将在稍后重新启动,但保存在RAM中(未保存)的所有数据当然会丢失。因此,必须在onPause()或onSaveInstanceState()中保存应用程序状态。在您的情况下,这可能意味着必须保存HashMap和所有辅助数据结构

OTOH,如果产品的数量很小(并且预计会保持很小),那么一个数据库可能是一种过度杀伤力;如果只需要从10项中选择一项,那么编写循环要比执行所有数据库支持更快

还有一个更重要的注意事项:从MVC的观点来看,活动是一个控制器(至于视图,您通常创建和使用XML并重用现有的框架类,尽管您可以编写自定义控件)。每次设备方向更改时以及在某些其他情况下,都会重新创建活动。但是您的数据属于模型部分。他们必须经受住方向的变化。因此,它们不能归某个活动所有。

回答

a。HashMap无疑将在内存操作方面胜过sqlite,因此它将运行得更快。但它不会为您提供一致性,移动设备是一个不稳定的环境,如果不满足其内存需求,操作系统必然会在后台或前台杀死应用程序,在这种情况下,您可能会在将其提交到永久存储之前丢失所有重要的更新

b。与Map相比,SQLITE速度较慢,但它是可靠的,它将确保正确保存对您数据的所有提交,即使app Crash db将保证恢复您在此之前提交的数据,Map肯定缺少此功能

c。考虑到将数据加载到映射中以实现更快的操作并在记录数据的任何增量时执行与数据库的同步的场景,此场景非常合理,如果设计得当,可以出色地执行


总而言之,你应该继续进行DB+MAp操作,如果涉及大量数据库操作,这将使你的应用程序运行顺畅,只需确保将数据和应用程序分开,不要让你的应用程序一开始就依赖于数据的加载。

这更像是一个内存与存储的参数,hashmap会占用更多内存,但会更快SQLite Db会稍微慢一点,但应用程序占用更少内存,但存储空间更大谢谢!哪一个更快。访问内存或访问数据库。