2013-06-26 18 views
8

Ten nice article pokazuje nam, jak wydrukować wszystkie bieżące właściwości systemu na STDOUT, ale muszę przekonwertować wszystko, co jest w System.getProperties() na HashMap<String,String>.Jak przekonwertować wszystkie właściwości systemu Java na HashMap <String, String>?

Stąd jeśli istnieje właściwość system o nazwie „baconator” o wartości „tak!”, Że zestaw z System.setProperty("baconator, "yes!"), następnie chcę HashMap mieć klucz baconator i odpowiednią wartość yes!, etc Ten sam pomysł dla właściwości systemu wszystkie.

Próbowałem to:

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

Ale wtedy pojawia się błąd:

Type mismatch: cannot convert from element type Object to String

Więc próbowałem:

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

i jestem otrzymuję ten błąd:

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

Jakieś pomysły?

+0

To jest duplikat http://stackoverflow.com/questions/17209260/converting-java-util-properties-to-hashmapstring-string –

Odpowiedz

7

Zrobiłem test próbki przy użyciu Map.Entry

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

Twoim przypadku, można to wykorzystać, aby przechowywać go w 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

pętli nad Set<String> (co jest Iterable), które jest zwracana metodą stringPropertyNames(). Podczas przetwarzania każdej nazwy właściwości należy użyć wartości getProperty, aby uzyskać wartość właściwości. Następnie masz informacje potrzebne do uzyskania wartości swoich właściwości do Twojego.

0

To działa

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

Albo można użyć metody entrySet() z Properties uzyskać typ Entry z Properties który jest Iterable lub można użyć metody stringPropertyNames() z klasy Properties dostać Set kluczy na tej liście właściwości. Użyj metody getProperty, aby uzyskać wartość właściwości.