Хеш-таблица формы - <ключ, хеш-таблица> в Java - PullRequest
1 голос
/ 18 января 2012

Я просто хочу знать, возможно ли создать хеш-таблицу в java вида <key, hash table>.

По сути, первый ключ приводит меня к новой хэш-таблице; затем я ищу эту таблицу, используя другой ключ.

Ответы [ 4 ]

10 голосов
/ 18 января 2012

Конечно, это:

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

, где K1 - ключ "хеш-таблицы", а K2 и V - ключ и тип значения внутренней "хеш-таблицы".

edit : как справедливо указывает @AndreiBodnarescu, вы также должны тщательно выбрать реализацию Map (Map - это интерфейс).Задайте себе следующие вопросы:

  • требуется ли многопоточный доступ на внешней / внутренней карте?Если да, рассмотрите Hashtable или Collections.synchronizedMap(...);
  • имеет ли значение порядок вставки?Если да, рассмотрите LinkedHashMap;
  • , хотите ли вы отсортировать ключи?Если да, рассмотрите TreeMap.

Тщательно выбирайте свою реализацию!

2 голосов
/ 18 января 2012

вы можете использовать

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

где, очевидно, InnerValueType все еще может быть Hashtable

Если ваша структура данных недоступна для нескольких потоков, вы можете перераспределить Hashtable с помощью HashMap, который имеет все поведение структуры хеш-таблицы, но без синхронизации.

1 голос
/ 18 января 2012

Конечно, это возможно.Вы должны использовать HashMap, а не Hashtable (поскольку Hashtable - это устаревший класс коллекции, который был заменен на HashMap начиная с Java 1.2).

Пример:

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>());
0 голосов
/ 18 января 2012

попробуй

Hashtable<Integer, Hashtable> hashTable = new Hashtable<Integer, Hashtable>():
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...