Java:导出和导入HashMap

Java:导出和导入HashMap,java,hashmap,Java,Hashmap,只是想知道,JAVA中是否还有导出hashmap的方法 我知道你是通过以下方式定义的: HashMap hmap=新的HashMap() 我已经找到了一些例子,说明了如何在hashmap中获取或插入信息,但我不知道如何保存“hashmap”,以便在程序运行一次期间添加的数据可以被另一次添加的程序访问 基本上,在程序运行时,用户会在用户名| amount格式的金额后面添加自己的姓名。 然后你就可以关闭程序了。 下次打开程序时,您应该能够打开hashmap,并通过使用用户的用户名作为密钥来获取与用户

只是想知道,JAVA中是否还有导出hashmap的方法

我知道你是通过以下方式定义的:

HashMap hmap=新的HashMap()

我已经找到了一些例子,说明了如何在hashmap中获取或插入信息,但我不知道如何保存“hashmap”,以便在程序运行一次期间添加的数据可以被另一次添加的程序访问

基本上,在程序运行时,用户会在用户名| amount格式的金额后面添加自己的姓名。 然后你就可以关闭程序了。 下次打开程序时,您应该能够打开hashmap,并通过使用用户的用户名作为密钥来获取与用户相关的金额

到目前为止,这是我唯一想到的方法,但如果有更好的方法,请务必告诉我:)


谢谢

如何保存数据完全由您选择。
对此,我最好使用
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.");
Properties=newproperties();
道具加载(输入流);//仅当属性文件不为空时调用此函数
for(Map.Entry:yourHashMap.entrySet()){
props.setProperty(entry.getKey(),entry.getValue()+);
}
store(outputStream,“这里有一些评论”);
我添加了
+”
,以确保传递了
字符串。

“此处有一些注释。”
显然是必要的,尽管您可以将其设为空。

HashMap是一种数据结构,允许以键/值对存储数据。哈希函数用于均匀分配密钥和优化检索

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

程序再次运行后,您不会真正“关闭”哈希映射并再次“打开”,因为它只局部存在于内存中,所以当您停止JVM(应用程序)时,数据就消失了

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

  • 您可以将其持久化到数据库、SQL或NoSQL
  • 您可以使用标准格式(如CSV、XML、JSON、YAML、TOML或自定义二进制格式)将其持久化到文件中的磁盘。您甚至可以直接将Java类序列化到磁盘
  • 您可以通过网络将数据发送给另一个要处理或存储的服务,通常序列化为JSON或XML
从您的问题来看,您似乎正在尝试编写一个桌面应用程序。您可以将数据存储为CSV或XML格式,或者使用像SQLite这样的轻量级SQL数据库,但在您的情况下,我认为一个好方法是使用MapDB。基本上,您可以将其作为HashMap使用,并将其保存到磁盘,稍后您可以再次从磁盘读取它,因此它或多或少是您希望能够使用HashMaps执行的操作。

HashMap就是这样。这意味着您可以将HashMap写入到由a支持的,以将HashMap写入文件,然后可以使用由a支持的从文件中读取。这是实现这一点的一种方法,而且对于Java编程语言来说是非常自然的

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


请注意,HashMap的实体也必须可序列化才能工作

通常,这是通过在输入时将信息保存到文件或数据库中,然后在每次程序打开时从文件或数据库中读取来完成的。你认为最好的方法是什么?文本文件?这实际上取决于您的用例,但在几乎所有情况下,使用某种结构化数据(如XML、JSON或CSV)会更容易。为每种格式查找一些库,并选择一个看起来最简单的。如果你只在Java工作,@middnightas看起来有一个合理的解决方案。好的,谢谢。这会在某处创建文件吗?另外,输入/输出流是什么?如果要将其存储到文件,则
props.store
上的
outputStream
可以是
FileOutputStream
。Path outputStream=“/Path/to/where”?将其放在块之前会将文件导出到给定位置?
outputStream
必须是
java.io.outputStream
的子类。如果要将其存储到文件中,请使用
FileOutputStream outputStream=newfileoutputstream(newfile(“/path/to/where”)以及什么文件类型最适合此操作?txt/json/yaml?