Несколько комментариев. Hashtable
полезен, когда вам нужен синхронизированный доступ к элементам в Map
, если это не тот случай, когда HashMap
является предпочтительным.
В Java у нас нет указателей, но у нас есть ссылки на объекты (помните, что в Java все объекты передаются по значению, а не по ссылке). И да, вы можете хранить ссылки на объекты как значения в Map
. Я думаю, вы смешиваете концепции C/C++ с концепциями на Java, возможно, вам следует точно объяснить, что вы хотите делать с «указателями».
Просто, чтобы быть уверенным - вы можете иметь Map
такие, как этот в Java:
Map<Integer, Integer> table = new HashMap<Integer, Integer>();
В приведенном выше коде, ключи и значения из Map
являются ссылки на Integer
объектов, и Integer
Класс неизменен, что означает, что вы не можете изменить его значение, когда оно на месте, но, конечно, вы можете изменить значение, на которое указывает клавиша в Map
.
EDIT:
Образец в этом вопросе будет выглядеть в Java:
Map<Integer, Integer> ht1 = new HashMap<Integer, Integer>();
ht1.put(1, 100);
ht1.put(2, 200);
Map<Integer, Integer> ht2 = new HashMap<Integer, Integer>();
ht2.put(1, 100);
ht2.put(2, 200);
Map<Integer, Integer> value = new HashMap<Integer, Integer>();
value.put(100, null);
value.put(200, null);
В приведенном выше коде все числа в трех картах являются ссылки на неизменные объекты: то, что представляется числом 100 в действительности, является ссылкой на объект new Integer(100)
, а потому, что Integer
является неизменным классом, возможно, что все три ссылок до new Integer(100)
указывает на тот же объект в памяти.
Итак, отвечая на ваш вопрос: да, возможно, что в Java можно хранить указатель в ht1 и ht2 вместо 100 и 200, что указывает (и может получить доступ) до 100 и 200 значений хэш-таблицы. На самом деле это то, что уже происходит, и нет другого способа сделать это, потому что карты в Java не могут хранить примитивные типы (например, int
), только ссылки. И снова, учитывая, что все экземпляры Integer
неизменяемы, вы не можете изменить их значение, потому что это приведет к изменению значений в других местах, где они используются и используются.
Не могли бы вы более подробно объяснить свой вопрос, а точнее, чего вы пытаетесь достичь. – AlanFoster
@AlanFoster, мне нужна структура как ht1 = {(1, pointer1), (2, pointer2)} где pointer1 ----) 100 (которая хранится в значении hashtable). – Arpssss