2017-02-20 2 views
0

私は大学初心者のJavaで、私は以下のエクササイズについて少し質問があります。シングルトンw/HashMap

私はシングルトンを使用してアプリケーションを作成し、このように、file.xmlで情報を持っているメモリに1つのHashMapをインスタンス化する必要があります。

<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

'private map memory = new HashMap();のような新しいプライベートフィールドを'arquivo'と' log'フィールドです。 –

+0

@TobiasOtto生のコレクションの使用はお勧めしません。この目的のために、 'Map 'が良い選択である可能性が高いです。 – Moira

+0

シェア・ガイズありがとう。私は 'HashMap 'を使用しようとしていましたが、まだ成功していませんでした。このHashMapをFileWriterで使用してxmlファイルを作成できますか? – Cavaleiro

答えて

0

XMLとハッシュマップのリンクがわからないので、ここではXMLを解析してハッシュマップの値を入力する必要があると仮定しています。この場合、JAXBを使用してXMLから読み込み、ハッシュマップに保存することができます。

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

1つの提案次のようにあなたは、単に宣言したHashMap使用することができ関わる一切の解析が存在しない場合:

は、あなたのシングルトンにロック機構をダブルチェックを実施します。

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

インスタンスを作成し、パブリックメソッドを使用してハッシュマップを公開するときにハッシュマップ値を設定します。あなたのロジックにも基づいてハッシュマップの値が変更された場合はXMLファイルを更新します(ビジネスロジックごとに許可されている場合)

+0

ありがとう!私はこれを試し、JAXBを探します。 – Cavaleiro

+0

物事を単純にするために、DOMパーサを使用することもできます。サンプルコードは次のとおりです。http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/ –

+0

もう一度ありがとうございます。私はDOMについて知らなかった。これをチェックして実装しようとします。 – Cavaleiro