2013-06-26 2 views
8

Это nice article показывает нам, как печатать все текущие свойства системы в STDOUT, но мне нужно преобразовать все, что находится в System.getProperties(), в HashMap<String,String>.Как преобразовать все свойства Java-системы в HashMap <String, String>?

Следовательно, если есть свойство системы под названием «Baconator», со значением «да!», Что я установил с System.setProperty("baconator, "yes!"), то я хочу в HashMap иметь ключ baconator и соответствующее значение yes!, и т.д. . Такая же идея для все Свойства системы.

Я попытался это:

Properties systemProperties = System.getProperties(); 
for(String propertyName : systemProperties.keySet()) 
    ; 

Но тогда получите ошибку:

Type mismatch: cannot convert from element type Object to String

Итак, я попробовал:

Properties systemProperties = System.getProperties(); 
for(String propertyName : (String)systemProperties.keySet()) 
    ; 

И я получаю эту ошибку:

Can only iterate over an array or an instance of java.lang.Iterable

Любые идеи?

+0

Это дубликат http://stackoverflow.com/questions/17209260/converting-java-util-properties-to-hashmapstring-string –

ответ

7

Я сделал пробный тест с использованием Map.Entry

Properties systemProperties = System.getProperties(); 
for(Entry<Object, Object> x : systemProperties.entrySet()) { 
    System.out.println(x.getKey() + " " + x.getValue()); 
} 

В вашем случае, вы можете использовать это, чтобы хранить его в Map<String, String>:

Map<String, String> mapProperties = new HashMap<String, String>(); 
Properties systemProperties = System.getProperties(); 
for(Entry<Object, Object> x : systemProperties.entrySet()) { 
    mapProperties.put((String)x.getKey(), (String)x.getValue()); 
} 

for(Entry<String, String> x : mapProperties.entrySet()) { 
    System.out.println(x.getKey() + " " + x.getValue()); 
} 
2

петлю над Set<String> (который Iterable), что возвращается методом stringPropertyNames(). При обработке каждого имени свойства используйте getProperty, чтобы получить значение свойства. Затем у вас есть информация, необходимая для put вашей стоимости недвижимости в вашем HashMap.

0

Это делает работу

Properties properties= System.getProperties(); 
for (Object key : properties.keySet()) { 
    Object value= properties.get(key); 

    String stringKey= (String)key; 
    String stringValue= (String)value; 

    //just put it in a map: map.put(stringKey, stringValue); 
    System.out.println(stringKey + " " + stringValue); 
} 
0

Либо вы можете использовать метод entrySet() от Properties получить Entry типа от Properties который Iterable или вы могли бы использовать метод stringPropertyNames() из Properties класса, чтобы получить Set ключей в этом списке свойств. Для получения значения свойства используйте метод getProperty.

 Смежные вопросы

  • Нет связанных вопросов^_^