我可以使用与其声明不同的方式定义散列映射

时间:2014-02-12 08:55:20

标签: java hashmap

我想要做的是有一个实际上将值保存为一个事物的地图,但是被声明为另一个例如实际上将值保存为String,但put / get将使用Integer ...

Map<String,String> map = new HashMap<String,String>();

我可以将此地图用于

map.put("A","1");
String ret = map.get("A");

但这会给我一个字符串,我也需要'把'放在一个字符串中。

我想要的是put / get方法接受一个I​​nteger值(但地图仍然存储......

map.put("A",1);
Integer ret = map.get("A");

我怎样才能做到这一点?

N.B。这不仅仅用于字符串/整数转换,而只是在任何类型之间进行转换。

感谢。

4 个答案:

答案 0 :(得分:2)

您可以使用Object作为值类型。它可以存储StringIntegerDouble,几乎可以存储任何内容。但是在使用Object时需要非常小心,因为您必须相应地投射从地图中获得的每个值(否则您将始终获得ClassCastException)。

Map<String, Object> map = new HashMap<String, Object>();

仅供参考,我不建议你使用它。相反,请确保您的Map必须保留并相应地设置值类型。

答案 1 :(得分:1)

简单

Map<String,Integer> map = new HashMap<String,Integer>();

答案 2 :(得分:1)

你可以(但不应该使用,真的)这个生物:https://gist.github.com/eltabo/8953176。真的......这很邪恶。 仅用于教育目的。

答案 3 :(得分:0)

为什么有人想要将值存储在与该值不同的表示中?从地图中获取后,你仍然可以用整数创建一个字符串并反转,但是你有什么优势呢?