Java映射和基元

Mag*_*ero 7 java primitive dictionary word-wrap

我想创建一个映射,它将一个String键作为键,一个原语作为值.我正在查看Java文档,并没有看到Primitive是一个类类型,或者他们共享某种包装类.

如何将值约束为原语?

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

kha*_*hik 8

Java Autoboxing允许创建地图Long, Integer, Double,然后使用原始值操作它们.例如:

java.util.HashMap<String, Integer> map = new java.util.HashMap<String, Integer>();
map.put("one", 1); // 1 is an integer, not an instance of Integer
Run Code Online (Sandbox Code Playgroud)

如果你想在一个地图中存储不同的原始类型,你可以通过制作一个Map<String, Number>.允许存储的值BigDecimal,BigInteger,Byte,Double,Float,Integer,Long,Short(和AtomicLong,AtomicInteger).

这是一个例子:

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

map.put("one", 1);
map.put("two", 2.0);
map.put("three", 1L);

for(String k:map.keySet()) {
  Number v = map.get(k);
  System.err.println(v + " is instance of " + v.getClass().getName() + ": " + v);
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,提取超类型Vehicle并使其成为Map <String,Vehicle>或Map <String ,? 扩展Vehicle>(泛型语法总是让我困惑) (2认同)
  • 有一个数字和字符串的超类型.它被称为对象! (2认同)