繁体   English   中英

Java:导出和导入 HashMap

[英]Java: Export and Import a HashMap

只是想知道,JAVA 中是否有导出哈希图的方法?

我知道您通过以下方式定义了一个:

HashMap hmap = new HashMap();

我已经找到了如何获取或插入信息到哈希图的示例,但我不知道如何保存“哈希图”,以便程序运行一次期间添加的数据可以被程序访问又加了一次。

基本上,在程序运行时,用户将添加他们的姓名,然后以 UserName|Amount 格式添加金额。 然后你可以关闭程序。 下次打开程序时,您应该能够打开哈希图并通过使用用户名作为键来获取与用户绑定的数量。

这是迄今为止我想到的唯一方法,但如果有更好的方法,请务必让我知道:)

谢谢!

您如何保存数据完全是您的选择。
我最好为此使用java.util.Properties类。
每当您想“保存”您的HashMap ,对其内容进行 for 循环,然后在您的Properties字段上调用setProperty方法:

Properties props = new Properties();
props.load(inputStream); // Only call this if your properties file is not empty
for(Map.Entry<K, V> entry : yourHashMap.entrySet()) {
    props.setProperty(entry.getKey(), entry.getValue() + "");
}
props.store(outputStream, "Some comment here.");

我添加了+ ""以确保传递了一个String
"Some comment here." 显然是必要的,尽管您可以将其设为空。

HashMap 是一种允许以键/值对形式存储数据的数据结构。 散列函数用于均匀分布密钥并优化检索。

键可以是任何东西,但字符串是常见的选择,值可以是任何 Java 类。

一旦程序再次运行,你并没有真正“关闭”一个 HashMap 并再次“打开”它,因为它只存在于内存中,所以当你停止 JVM(应用程序)时,数据就消失了。

为了避免丢失驻留在内存中的数据,您必须将其持久化。 有很多方法可以做到:

  • 您可以将其保存到数据库、SQL 或 NoSQL。
  • 您可以使用标准格式(如 CSV、XML、JSON、YAML、TOML 或自定义二进制格式)将其保存在文件中的磁盘中。 您甚至可以直接将 Java 类序列化到磁盘。
  • 您可以通过网络发送数据以供其他服务处理或存储,通常序列化为 JSON 或 XML。

从您的问题来看,您似乎正在尝试编写桌面应用程序。 您可以将数据存储为 CSV 或 XML,或者使用像 SQLite 这样的轻量级 SQL 数据库,但在您的情况下,我认为使用 MapDB 是一个好方法。 您基本上将它用作 HashMap 并且您可以将其保存到磁盘,然后您可以再次从磁盘读取它,因此它或多或少是您期望能够使用 HashMap 执行的操作。

HashMap 是可序列化的 这意味着您可以将 HashMap 写入由FileOutputStream支持的ObjectOutputStream以将 HashMap 写入文件,然后您可以使用由FileInputStream支持的ObjectInputStream从文件中读取。 这是一种实现方式,而且对于 Java 编程语言来说当然是一种非常自然的方式。

正如其他人已经指出的那样,这是否是一个好主意取决于您的用例。

请注意,您的 HashMap 的实体也必须是可序列化的才能正常工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM