0

我使用以下代码创建了属性对象 -

import java.util.*;

public class setPropertyTest {
   public static void main(String[] args) {

       Map<String, String> mp1 = new HashMap<>();
       mp1.put("from", "somethingfrom");
       mp1.put("to", "somethingTO");

       Map<String, Map<String,String>> mp2 = new HashMap<>();
       mp2.put("testing", mp1);

       Properties properties = new Properties();
       properties.putAll(mp2);


   }
}

当我打印属性时,它会打印到如下所示的内容 -

{testing={from=somethingfrom, to=somethingTO}}

如何from从属性对象中检索键值?

4

3 回答 3

1

这是执行此操作的 NPE 安全方法。getOrDefault来自 Java 8

mp2.getOrDefault("testing", Collections.emptyMap()).get("from")

于 2019-04-19T11:50:19.637 回答
1

正如这里提到的和@ernest_k 评论的那样,Properties 是为键是 String 并且值也是 String的情况设计的。

要实现您想要的,请尝试:

mp2.get("testing").get("from");
于 2019-04-19T11:44:13.523 回答
0

正如 OP 所要求的,"from"要从 Property object 获取键值(properties),我们可以做这样的事情

    Properties properties = new Properties();
    properties.putAll(mp2);
    Object obj = properties.get("testing");
    if (obj instanceof Map) {
        Map<String,String> innerMap = ((Map<String, String>) obj);
        innerMap.get("from");
    }
于 2019-04-19T11:53:50.517 回答