Singleton w / HashMap

时间:2017-02-20 17:12:24

标签: java hashmap singleton

我是Java的大学初学者,我对下面的练习有一点疑问,拜托,有人可以帮我解决这个问题吗?

我需要使用Singleton创建一个应用程序,并在一个内存中实例化一个HashMap,其中包含file.xml的信息,如下所示:

<propriedades>
<configuracao>
 <chave>timeoutApplication</chave>
<valor>10</valor>
</configuracao>
</propriedade>

这是我现在的代码:

public class ArquivoLog {

   private FileWriter arquivo;
   private static ArquivoLog log;

   private ArquivoLog(){
      try {
          this.arquivo = new FileWriter("C:\\arquivo.xml");
      }catch (IOException ex) {
          Logger.getLogger(ArquivoLog.class.getName()).log(Level.SEVERE, null, ex);
      }        
   }

   public static ArquivoLog getInstance(){
      if(log==null){
         log = new ArquivoLog();
      }
      return log;
   }
}

在这种情况下,我不知道如何实现HashMap。

1 个答案:

答案 0 :(得分:0)

我不确定XML和hashmap之间的链接所以我假设您需要解析XML并填充hashmap值。在这种情况下,您可以使用JAXB从xml读取并将其保存到hashmap。

如果没有涉及解析,那么你可以简单地声明和使用HashMap,如下所示

private FileWriter arquivo;
private HashMap map;
private static ArquivoLog log;

一个建议:

在你的单身人士中实施双重检查锁定机制。

 if(log==null) {
     synchronized (ArquivoLog.class) {
         if(log==null) {
            log = new ArquivoLog();
         }
     }
 }

在创建实例时填充哈希值,并使用公共方法公开哈希映射。如果更改了hashmap值(如果根据您的业务逻辑允许,则基于您的逻辑更新xml文件)