当前位置: 首页 > 知识库问答 >
问题:

在 java 中使用文件作为大型地图的存储介质

吉嘉珍
2023-03-14

我有大量数据需要存储Map中

    < li>包含密钥(字符串密钥) < li>get(字符串键)。add(int value) < li>put(String key,singleton list(int value)) < li>entrySet()。iterator()

我最初只是使用HashMap

我的下一个想法是将所有内容转储到文件中。但是,这意味着 getcontainsKeyput 将成为非常昂贵的操作,这根本不是可取的。当然,我可以对所有内容进行排序,但这在大文件中通常很困难。

我想知道是否有更好的策略。


共有2个答案

葛威
2023-03-14

为什么不尝试使用ObjectOutputStream将映射存储到文件中,并且可以使用ObjectInputStream从映射中获取数据。我希望它能帮助你。

令狐嘉运
2023-03-14

使用嵌入式数据库引擎(键值存储),例如MapDB,是一种方法。

来自MapDB官网:

MapDB是嵌入式数据库引擎。它提供了由磁盘或内存数据库存储支持的java集合。MapDB拥有堪比java.util.HashMap等集合的优秀性能,但不受GC的限制。它还是一个非常灵活的引擎,具有许多存储后端、缓存算法等等。最后MapDB是纯java单400K JAR,只依赖JRE 6或Android 2.1。

如果这对您有用,您可以从这里开始。

 类似资料:
  • 我正在处理一些发布论坛项目,并试图找出理想的FiRecovery数据库结构。我读到文档的最大大小为1 mg,但通过将多个帖子存储在文档中而不是为每个帖子使用单个文档来最大限度地利用每个文档的存储空间的利弊是什么? 我认为它会更便宜。假设应用程序将使用文档中的所有数据,带宽成本是相同的,但不是多次读取,我将只对一个文档收费。这有意义吗? 它也会更快吗?

  • 本文向大家介绍unity3d 在Unity中使用Git大文件存储(LFS),包括了unity3d 在Unity中使用Git大文件存储(LFS)的使用技巧和注意事项,需要的朋友参考一下 示例 前言 Git可以直接使用视频游戏开发。然而,主要警告是,从长期来看,对大型(> 5 MB)媒体文件进行版本控制可能会成为问题,因为提交历史记录膨胀-Git最初并不是最初用于对二进制文件进行版本控制的。 好消息是

  • 问题内容: 我将创建一个或多或少具有以下形式的结构: 我想将这些值写入文件并在后续调用中读取它们。我最初的计划是将它们读入映射并使用键(路径)查找值(哈希和LastModified)。Go中有一种巧妙的方法吗? 如果没有,您可以推荐哪种文件格式?我已经阅读并尝试了先前项目中的一些键/值文件存储,但并未使用Go进行试验。现在,我的要求可能非常简单,因此大型数据库服务器系统会显得过大。我只想要我可以快

  • 我是Spring批处理的新手,我想找到使用用例的完美方法,如下所示: 我有多个csv文件,我想把它们存储在内存(作为集合存储...即列表地图),然后我想在我的逻辑业务的下一步/作业中使用/引用它们。 让我们举一个例子,一个对象XX和一个ItemWriter一起存储在地图上。 对象XX模型 对象X的itemReader 目标作者 正如你可以看到所有的记录都存储在地图与itemWriter,我做了一个

  • 我想尝试使用Cassandra作为事件源应用程序中的事件存储。我对事件存储的要求非常简单。事件“模式”应该是这样的: id:聚合根实体的id data:序列化的事件数据(例如JSON) 时间戳:事件发生时 sequence_number:事件的独特版本 我对卡桑德拉完全陌生,所以请原谅我对即将写的东西的无知。我只有两个查询,我想对此数据运行。 为我提供给定聚合根 ID 的所有事件 如果序列号为 我

  • 问题内容: 有什么方法可以使用Java API将图像文件存储在Firebase中以用于android应用程序? 我已阅读此线程,可以使用JavaAPI将图像文件存储在Firebase中,但仍然没有答案。我知道有一个官方的api,称为firepano,这里是链接https://github.com/firebase/firepano,但这是Java语言库的链接。 Java库有什么解决方案吗? 问题答