Java:导出和导入HashMap

时间:2016-09-09 21:29:14

标签: java hashmap

只是想知道,JAVA中有没有导出哈希映射?

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

HashMap hmap = new HashMap();

我已经找到了如何抓取或插入信息到hashmap的示例,但我不知道如何保存" hashmap",以便在程序运行一次,程序可以再次访问。

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

这是我到目前为止这样做的唯一方法,但是如果有更好的方法,那么请一定取悦,请告诉我:)

谢谢!

3 个答案:

答案 0 :(得分:1)

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

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."显然是必要的,尽管你可以把它弄空。

答案 1 :(得分:1)

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

密钥可以是任何东西,但String是一种常见的选择,值可以是任何Java类。

你真的没有&#34;关闭&#34;一个HashMap和&#34;打开&#34;一旦程序再次运行,它再次运行,因为它只在内存中存在,所以当你停止JVM(应用程序)时,数据就会消失。

为避免丢失驻留在内存中的数据,您必须保留它。有很多方法可以做到:

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

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

答案 2 :(得分:0)

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

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

请注意,HashMap的实体也必须是Serializable才能使其正常工作!