【问题标题】:How can I set Hashtable value to be array? [duplicate]如何将 Hashtable 值设置为数组? [复制]
【发布时间】:2015-10-30 08:34:14
【问题描述】:

是否可以在 Java 中创建 Hashtable,其中键是整数,值是整数数组。我尝试了下面的代码,但它不起作用。有谁知道如何制作这样的数据结构?

int[] a = {0, 0, 0};
// does not work!!!!
Hashtable<int, int[]> entry = new Hashtable<NodeT, a>;

【问题讨论】:

    标签: java data-structures hashtable


    【解决方案1】:

    几件事:

    1) 请不要使用Hashtable,而是使用HashMapHashtable 是旧的同步版本,人们不再使用它。

    使用Hashtable时请参考this优秀答案。

    2) 请针对接口进行编码,除非您有充分的理由不这样做(因此您的 entry 应该是 Map 类型)。这使您可以轻松地将底层实现更改为不同类型的映射。

    3) 请阅读official Java tutorial,它解释了如何使用地图界面,基本上应该或多或少是这样的:

    Map&lt;Integer, int[]&gt; entry = new HashMap&lt;&gt;();

    或者如果您使用早于 7 的 Java Map&lt;Integer, int[]&gt; entry = new HashMap&lt;Integer, int[]&gt;();,因为 the diamond operator 是在 Java7 中引入的。另请注意,在&lt;&gt; 中,双方都需要相同的值。为什么要在右侧写&lt;NodeT, a&gt;?我收集a 是尝试用a 初始化它,但我不明白NodeT

    您必须使用Integer 而不是int,因为Java 中的泛型不接受原始类型。 int[] 工作正常,因为这是 Java 中的一个对象。

    之后,您需要将条目放入地图中。

    【讨论】:

      【解决方案2】:
      1. 不要使用Hashtable。使用HashMapHashMap 的性能更高,而 Hashtable 自 Java 2 以来基本上已被弃用。
      2. 您不能使用int 作为键,它必须是Object,在这种情况下是autoboxed Integer,所以使用:

        Map<Integer, int[]> = new HashMap<>(); 
        

      【讨论】:

        猜你喜欢
        • 2014-09-20
        • 1970-01-01
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        • 2014-05-26
        • 2015-02-05
        • 2016-10-01
        • 2017-10-26
        相关资源
        最近更新 更多