2017-02-20 7 views
0

Я начинающий университет на Java, и у меня есть небольшой вопрос об упражнении ниже, пожалуйста, может кто-нибудь мне помочь?Singleton w/HashMap

Мне нужно сделать приложение с помощью 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

Вы можете добавить новое частное поле, например 'private Map memory = new HashMap();' только между поля 'arquivo' и' log'. –

+0

@TobiasOtto Я бы не рекомендовал использовать исходные коллекции. Для этой цели «Map », вероятно, является хорошим выбором. – Moira

+0

Спасибо, что поделились ребятами. Я пытался использовать 'HashMap ', но пока не удалось. Могу ли я использовать этот HashMap с FileWriter для создания XML-файла? – Cavaleiro

ответ

0

Я не уверен в связи между XML и hashmap, поэтому я предполагаю, что вам нужно проанализировать XML и заполнить значения хэшмапа. В этом случае вы можете использовать JAXB для чтения из xml и сохранить его в hashmap.

Если нет разбора участвует, то вы можете просто объявить и использовать HashMap следующего

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

Одно предложения:

Implement двойной проверки механизма блокировки в вашем одноплодном.

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

Заполнение значений hashmap при создании экземпляра и раскрытие хэш-карты с использованием общедоступного метода. Также на основе вашего логического обновления xml-файл, если значения хэш-карты изменены (если это разрешено согласно вашей бизнес-логике)

+0

Спасибо! Я попробую это и посмотрю на JAXB. – Cavaleiro

+0

Чтобы все было просто, вы также можете использовать парсер DOM. Вот пример кода: http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/ –

+0

Еще раз спасибо. Я не знал о DOM. Я проверю это и попытаюсь реализовать. – Cavaleiro