2013-05-02 3 views
11

Я хочу заполнить HashMap, используя класс Properties. Я хочу загрузить записи в файл .propeties, а затем скопировать его в HashMap.Заполнение HashMap записями из файла свойств

Раньше я только что инициализировал HashMap с файлом свойств, но теперь я уже определил HashMap и хочу инициализировать его только в конструкторе.

Ранее подход:

Properties properties = new Properties(); 
try { 
properties.load(ClassName.class.getResourceAsStream("resume.properties")); 
} 
catch (Exception e) { 
} 
HashMap<String, String> mymap= new HashMap<String, String>((Map) properties); 

Но теперь у меня есть это

public class ClassName { 
HashMap<String,Integer> mymap = new HashMap<String, Integer>(); 

public ClassName(){ 

    Properties properties = new Properties(); 
    try { 
     properties.load(ClassName.class.getResourceAsStream("resume.properties")); 
    } 
    catch (Exception e) { 

    } 
    mymap = properties; 
    //The above line gives error 
} 
} 

Как назначить свойства объекта к HashMap здесь?

ответ

20

Если я правильно понимаю, каждое значение в свойствах представляет собой строку, представляющую целое число. Таким образом, код будет выглядеть следующим образом:

for (String key : properties.stringPropertyNames()) { 
    String value = properties.getProperty(key); 
    mymap.put(key, Integer.valueOf(value)); 
} 
+3

В случае вы получаете ** нуль при использовании getResourceAsStream * *, вероятно, потому, что вы ищете файл за пределами classpath. Итак, чтобы прочитать абсолютный путь к файлу, вы можете сделать: \t \t 'File file = new File (" absolute/file/path/resume.properties "); \t \t \t FileInputStream fileInputStream = new FileInputStream (файл); \t \t \t properties.load (fileInputStream); \t \t \t fileInputStream.close(); ' –

14

Использование .entrySet()

for (Entry<Object, Object> entry : properties.entrySet()) { 
    map.put((String) entry.getKey(), (String) entry.getValue()); 
} 
1
public static Map<String,String> getProperty() 
    { 
     Properties prop = new Properties(); 
     Map<String,String>map = new HashMap<String,String>(); 
     try 
     { 
      FileInputStream inputStream = new FileInputStream(Constants.PROPERTIESPATH); 
      prop.load(inputStream); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
      System.out.println("Some issue finding or loading file....!!! " + e.getMessage()); 

     } 
     for (final Entry<Object, Object> entry : prop.entrySet()) { 
      map.put((String) entry.getKey(), (String) entry.getValue()); 
     } 
     return map; 
    } 
+0

Можете ли вы дать какое-то объяснение? – Cherniv

+0

Что такое только что прочитанный файл свойств заполняет карту с помощью ключа и значения. GetProperty() просто возвращает карту с ключом и значением. вы просто получаете доступ к значению с помощью getProperty(). get («key») –

2

Java 8 Стиль:

Properties properties = new Properties(); 
// add some properties here 
Map<String, String> map = new HashMap(); 

map.putAll(properties.entrySet().stream() 
        .collect(Collectors.toMap(e -> e.getKey().toString(), e -> e.getValue().toString())));