只是想知道,JAVA中有没有导出哈希映射?
我知道你通过以下方式定义:
HashMap hmap = new HashMap();
我已经找到了如何抓取或插入信息到hashmap的示例,但我不知道如何保存" hashmap",以便在程序运行一次,程序可以再次访问。
基本上,在程序运行时,用户将添加其名称,后跟金额UserName | Amount的金额。 然后你可以关闭程序。 下次打开程序时,您应该能够打开hashmap,并通过使用UserName作为键来获取与User绑定的数量。
这是我到目前为止这样做的唯一方法,但是如果有更好的方法,那么请一定取悦,请告诉我:)
谢谢!
答案 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(应用程序)时,数据就会消失。
为避免丢失驻留在内存中的数据,您必须保留它。有很多方法可以做到:
从您的问题来看,您似乎正在尝试编写桌面应用程序。您可以将数据存储为CSV或XML,或者使用像SQLite这样的轻量级SQL数据库,但在您的情况下,我认为一种好的方法是使用MapDB。您基本上将它用作HashMap,并且可以将其保存到磁盘,稍后您可以再次从磁盘读取它,因此它或多或少会与您希望能够使用HashMaps一样。
答案 2 :(得分:0)
HashMap是Serializable。这意味着您可以将HashMap写入由ObjectOutputStream支持的FileOutputStream以将HashMap写入文件,稍后您可以使用支持的ObjectInputStream从文件中读取由FileInputStream。这是实现它的一种方式,对Java编程语言来说当然是非常自然的。
这是否是一个好主意取决于你的用例,正如其他人已经指出的那样。
请注意,HashMap的实体也必须是Serializable才能使其正常工作!