是否有接受各种数据类型值的字典?

时间:2010-12-13 09:52:24

标签: java types dictionary map primitive-types

我需要一个地图,其中值是不同类型的,如整数,字符串等.Java的问题是这里的原语不是Object s,这表明它可能不可能有一个混合字典。我想证实这一点。

4 个答案:

答案 0 :(得分:8)

听起来你只想要一个Map<String, Object>(或任何你的密钥类型)。

原始值将适当地加框:

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

map.put("int", 20);
map.put("long", 100L);
// etc

请注意,为了检索值和 unbox ,您必须提及特定的包装类型:

// Explicit unboxing
int x = (int) (Integer) map.get("int");
// Implicit unboxing
int y = (Integer) map.get("int");
// USing a method from Number instead
int z = ((Integer) map.get("int")).intValue();

答案 1 :(得分:3)

当您将原语放入Java中的Map时,它们会将自动装箱添加到其对象形式中。例如,如果您将Map定义为:

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

然后您可以使用int类型的基元,因为它们会自动加入Integer

至于您的原始问题,请定义Map

// using Integer for key type, can be something else
Map<Integer, Object> myMap = new HashMap<Integer, Object>();

然后你应该能够在地图中放置任何Java对象。

答案 2 :(得分:1)

您可以利用自动装箱并使用Integer代替int等等。

相应的类型(IntegerDoubleBool,...)继承了对象,因此您可以使用标准Map<Object, Whatever>并向其投掷任意内容。

答案 3 :(得分:0)

您可以使用Integer代替int