2012-11-14 48 views
1

我正在编写一个程序,它从硬盘读取大量数据,并根据此数据创建哈希表,然后进行一些处理,稍微更改此初始哈希表。我的问题是,每次运行我的程序时,我都会从相同的数据创建相同的散列映射(让我们称之为初始散列映射)。只有处理不同于一次运行才能运行。无论如何,我可以创建一次hashmap并永久保存它?序列化会有帮助吗?将哈希表保存在永久存储器中

回答

2

这是一个众所周知的问题,有很多解决方案,其中我建议两个: 1.将散列表保存在SQL数据库表中,主键列包含键值,另一列包含相应的值; 2.使用nosql数据存储,其中有很多,其他Redis或SimpleDb。

-2

这里提出了类似的问题;我建议谷歌搜索:

java persistent hash table 

说了这么多,你可以手动的键值对保存到文件或数据库,并重建启动时的哈希值。

2

由于HashMap的是序列化的,我会用这种方式来保存它:

public void saveStatus(Serializable object){ 
    try { 
     FileOutputStream saveFile = new FileOutputStream("current.dat"); 
     ObjectOutputStream out = new ObjectOutputStream(saveFile); 
     out.writeObject(object); 
     out.close(); 
     fileOut.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

要恢复你的对象只是做这样的:

public Object loadStatus(){ 
    Object result = null; 
    try { 
     FileInputStream saveFile = new FileInputStream("current.dat"); 
     ObjectInputStream in = new ObjectInputStream(saveFile); 
     result = in.readObject(); 
     in.close(); 
     fileIn.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 

然后你才可以施展你的对象这个方法返回一个HashMap并继续在同一个地方。