10

这篇不错的文章向我们展示了如何将所有当前系统属性打印到 STDOUT,但我需要将其中的所有内容转换System.getProperties()HashMap<String,String>.

因此,如果有一个名为“baconator”的系统属性,其值为“yes!”,我使用 设置System.setProperty("baconator, "yes!"),那么我希望HashMap拥有一个 的键baconator和一个相应的值yes!,等等。所有系统属性的想法相同。

我试过这个:

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

但随后得到一个错误:

类型不匹配:无法从元素类型 Object 转换为 String

所以我尝试了:

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

我收到了这个错误:

只能遍历数组或 java.lang.Iterable 的实例

有任何想法吗?

4

5 回答 5

8

我做了一个样本测试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());
}
于 2013-06-26T22:30:48.850 回答
2

循环该方法返回的Set<String>(即) 。在处理每个属性名称时,使用来获取属性值。然后,您将您的属性值所需的信息放入您的.IterablestringPropertyNames()getPropertyputHashMap

于 2013-06-26T22:32:21.357 回答
2

从 Java 8 开始,您可以键入以下 - 相当长的 - 单行:

Map<String, String> map = System.getProperties().entrySet().stream()
  .collect(Collectors.toMap(e -> (String) e.getKey(), e -> (String) e.getValue()));
于 2018-05-22T21:34:44.203 回答
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);
}
于 2013-06-26T22:32:28.507 回答
0

您可以使用entrySet()from 方法Properties获取is的Entry类型,也可以使用类中的方法获取此属性列表中的一个键。使用方法获取属性值。PropertiesIterablestringPropertyNames()PropertiesSetgetProperty

于 2013-06-26T22:32:46.790 回答