将 Map<String,Object> 转换为 Map<String,String>

2022-08-31 12:43:17

如何转换为 ?Map<String,Object>Map<String,String>

这不起作用:

Map<String,Object> map = new HashMap<String,Object>(); //Object is containing String
Map<String,String> newMap =new HashMap<String,String>(map);

答案 1

现在我们有了Java 8 / streams,我们可以在列表中再添加一个可能的答案:

假设每个值实际上都是对象,则强制转换为应该是安全的。否则,可以使用其他一些机制将对象映射到字符串。StringString

Map<String,Object> map = new HashMap<>();
Map<String,String> newMap = map.entrySet().stream()
     .collect(Collectors.toMap(Map.Entry::getKey, e -> (String)e.getValue()));

答案 2

如果你只包含,那么你可以这样做:ObjectsStrings

Map<String,Object> map = new HashMap<String,Object>(); //Object is containing String
Map<String,String> newMap =new HashMap<String,String>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
       if(entry.getValue() instanceof String){
            newMap.put(entry.getKey(), (String) entry.getValue());
          }
 }

如果每个都不是,那么您可以替换成 .ObjectsString(String) entry.getValue()entry.getValue().toString()