2013-06-26 6 views
8

Diese nice article zeigt uns, wie Sie alle aktuellen Systemeigenschaften auf STDOUT drucken, aber ich muss alles, was in System.getProperties() ist, in eine HashMap<String,String> konvertieren.Wie konvertiert man alle Java-Systemeigenschaften zu HashMap <String, String>?

also wenn es eine Systemeigenschaft namens „baconator“, mit einem Wert von „Ja!“, Das ich mit System.setProperty("baconator, "yes!") gesetzt, dann will ich die HashMap einen Schlüssel von baconator und einen entsprechenden Wert von yes! zu haben, usw. Gleiche Idee für alle Systemeigenschaften.

Ich versuchte dies:

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

Aber dann eine Fehlermeldung erhalten:

Type mismatch: cannot convert from element type Object to String

So dann habe ich versucht:

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

Und diese Störung erhalte:

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

Irgendwelche Ideen?

+0

Dies ist ein Duplikat von http://stackoverflow.com/questions/17209260/converting-java-util-properties-to-hashmapstring-string –

Antwort

7

Ich habe eine Probe-Test Map.Entry

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

Für Ihren Fall verwenden, können Sie diese speichern in Ihrem Map<String, String> verwenden:

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

Schleife über die Set<String> (das ist Iterable), dass wird von der stringPropertyNames() Methode zurückgegeben. Verwenden Sie zum Verarbeiten des Eigenschaftsnamens getProperty, um den Eigenschaftswert abzurufen. Dann haben Sie die benötigten Informationen zu put Ihre Immobilienwerte in Ihre HashMap.

0

Das funktioniert

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

Entweder man die entrySet() Methode von Properties kann eine Entry Art von Properties zu bekommen, welche Iterable ist oder Sie die stringPropertyNames() Methode aus der Properties Klasse verwenden könnten ein Set des Schlüssels zu bekommen in dieser Eigenschaftsliste. Verwenden Sie die getProperty-Methode, um den Eigenschaftswert abzurufen.

Verwandte Themen