1

如何正确实例化HashMap其值是变体的a List<Number>- 即,值可以采用List<Long>和/或的形式List<Double>。这是我到目前为止所尝试的:

HashMap<String, List<Number>> foo = new HashMap<String, List<Number>>();
foo.put("Tenticles", new ArrayList<Long>());

错误信息:The method put(String, List<Number>) ... is not applicable for the arguments (String, List<Long>)

我还希望能够将 a 添加Long到组成部分List<Long>,同样也可以添加 any Double

编辑这些答案没有显示如何将 aLong或 aDouble到组成列表之一。

4

3 回答 3

3

您可以使用wildcards

例如

Map<String, List<? extends Number>> foo = new HashMap<String, List<? extends Number>>();

如果您使用的是 Java 7,您可以执行以下操作以避免一些重复

Map<String, List<? extends Number>> foo = new HashMap<>();

将项目添加到列表

List<Long> longs= new ArrayList<>();
longs.add(10L);
foo.put("numbers", longs);
于 2013-10-08T02:42:31.320 回答
2

使用通配符

HashMap<String, List<? extends Number>> foo = new HashMap<String, List<? extends Number>>();
LinkedList<Long> list = new LinkedList<>();
list.add(10L);
foo.put("Tenticles", list);

您的List对象现在必须是Number.

于 2013-10-08T02:41:20.190 回答
0

这是您需要做的:-

    final HashMap<String, List<? extends Number>> foo = new HashMap<>();
    foo.put( "Tenticles", new ArrayList<Long>() );

语法List<? extends Number>意味着每个对象实现的对象列表Number

于 2013-10-08T02:44:15.197 回答