将整数转换为String,Object hashmap中的字符串

时间:2016-02-24 00:50:03

标签: java

如果我的HashMap<String,Object>有三个<String,String>条目,而<String,Integer>有一个条目,则可以使用#34; cast&#34;这容易变成HashMap<String,String>?现在我创建一个新的HashMap并复制所有值,以便我可以在复制过程中转换整数。

4 个答案:

答案 0 :(得分:2)

应该能够投射它,但在尝试从地图中检索其中一个整数时会出现异常。

我认为你要问的是抛出hashmap的内容,在这种情况下是值,所以它们都是字符串,并且不会发生。

最佳解决方案是在首先填充地图时将整数转换为字符串。

答案 1 :(得分:0)

您可以投射原始地图,无需复制:

map.put("intKey", map.get("intKey").toString());
Map<String, String> fixedMap = (Map) map;

虽然你的设计看起来确实有问题。最好修复将整数推入地图开始的代码,这样你就不需要在下游处理这个技巧了。

答案 2 :(得分:0)

这样的事情应该更容易:

 Class<? extends Object> className = obj.getClass();

  if (className.getName().contains("String")){
    //add the object      
  }else {
   //convert it to String and then add to HashMap
  }

答案 3 :(得分:0)

如果您正在使用java 8,则可以将forEach与BiConsumer一起使用。

看看下面的代码

Map<String, Object> map = new HashMap<>();
map.put("a", "a");
map.put("b", "b");
map.put("1", Integer.valueOf(1));

map.forEach((k, v) -> map.put(k, v.toString()));

在行map.forEach((k, v) -> map.put(k, v.toString()));之后,地图中的所有值都是字符串。对于循环仍然存在的courste,但是您正在使用语言功能/资源。