【问题标题】:Hash table of form - <key, hash table> in Java形式的哈希表 - Java 中的 <key, hash table>
【发布时间】:2012-01-18 21:52:47
【问题描述】:

我只是想知道是否可以在 java 中创建 &lt;key, hash table&gt; 形式的哈希表。

基本上第一个键将我引导到一个新的哈希表;然后我使用另一个键搜索该表。

【问题讨论】:

    标签: java hashtable


    【解决方案1】:

    没错:

    Map<K1, Map<K2, V>> themap = new HashMap<K1, Map<K2, V>>();
    

    其中K1是“哈希表”的key,K2V是内部“哈希表”的key和value类型。

    编辑:正如@AndreiBodnarescu 正确指出的那样,您还必须仔细选择您的Map 实现(Map 是一个接口)。问自己以下问题:

    • 外部/内部映射是否需要多线程访问?如果是,请考虑HashtableCollections.synchronizedMap(...)
    • 插入顺序重要吗?如果是,请考虑LinkedHashMap
    • 您想要对键进行排序吗?如果是,请考虑TreeMap

    仔细选择你的实现!

    【讨论】:

      【解决方案2】:

      你可以使用

      Hashtable<KeyType,Hashtable<InnerKeyType,InnerValueType>> ht = new Hashtable<>();
      

      显然 InnerValueType 仍然可以是 Hashtable

      如果你的数据结构没有被多个线程访问,你可以用 HashMap 替换 Hashtable,它具有哈希表结构的所有行为,但没有同步。

      【讨论】:

        【解决方案3】:

        当然可以。您应该使用HashMap,而不是Hashtable(因为Hashtable 是一个遗留集合类,自Java 1.2 以来已被HashMap 取代)。

        例子:

        Map<String, Map<String, Object>> mapOfMaps = new HashMap<String, Map<String, Object>>();
        
        mapOfMaps.put("one", new HashMap<String, Object>());
        mapOfMaps.put("two", new HashMap<String, Object>());
        

        【讨论】:

          【解决方案4】:

          试试

          Hashtable<Integer, Hashtable> hashTable = new Hashtable<Integer, Hashtable>():
          

          【讨论】:

            猜你喜欢
            • 2020-11-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-22
            • 1970-01-01
            • 2018-10-13
            • 2010-11-06
            • 1970-01-01
            相关资源
            最近更新 更多