我需要一个地图,其中值是不同类型的,如整数,字符串等.Java的问题是这里的原语不是Object
s,这表明它可能不可能有一个混合字典。我想证实这一点。
答案 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等等。
相应的类型(Integer
,Double
,Bool
,...)继承了对象,因此您可以使用标准Map<Object, Whatever>
并向其投掷任意内容。
答案 3 :(得分:0)
您可以使用Integer
代替int
。