2013-06-26 33 views
8

Điều này nice article cho chúng ta thấy cách in tất cả các thuộc tính hệ thống hiện tại thành STDOUT, nhưng tôi cần phải chuyển đổi mọi thứ có trong System.getProperties() thành HashMap<String,String>.Làm thế nào để chuyển đổi tất cả các thuộc tính hệ thống Java thành HashMap <String, String>?

Do đó nếu có một hệ thống tài sản được gọi là "baconator", với giá trị là "vâng!", Mà tôi thiết lập với System.setProperty("baconator, "yes!"), sau đó tôi muốn HashMap có một chìa khóa của baconator và một giá trị tương ứng của yes!, vv Cùng ý tưởng cho tất cả các thuộc tính hệ thống.

Tôi cố gắng này:

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

Nhưng sau đó nhận được một lỗi:

Type mismatch: cannot convert from element type Object to String

Vì vậy, sau đó tôi đã cố gắng:

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

Và đang nhận được lỗi này:

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

Bất kỳ ý tưởng nào?

+0

Đây là bản sao của http://stackoverflow.com/questions/17209260/converting-java-util-properties-to-hashmapstring-string –

Trả lời

7

Tôi đã làm một thử nghiệm mẫu sử dụng Map.Entry

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

Đối với trường hợp của bạn, bạn có thể sử dụng để lưu trữ nó trong Map<String, String> của bạn:

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

Vòng qua Set<String> (đó là Iterable) mà được trả về theo phương thức stringPropertyNames(). Khi xử lý từng tên thuộc tính, hãy sử dụng getProperty để nhận giá trị thuộc tính. Sau đó, bạn có thông tin cần thiết để put giá trị thuộc tính của bạn vào HashMap.

0

này không làm việc

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

Hoặc bạn có thể sử dụng phương pháp entrySet() từ Properties để có được một loại Entry từ Properties đó là Iterable hoặc bạn có thể sử dụng phương pháp stringPropertyNames() từ lớp Properties để có được một Set các phím trong danh sách tài sản này. Sử dụng phương thức getProperty để nhận giá trị thuộc tính.

Các vấn đề liên quan