Как создать хэш-таблицу в Java?

голоса
7

Самый простой способ создать хэш-таблицу (или ассоциативный массив ...) в Java? Мой Google-фу подвернулся пару примеров, но есть стандартный способ сделать это?

И есть ли способ, чтобы заполнить таблицу со списком кнопочной> пар значений без индивидуально вызова метода надстройки на объекте для каждой пары?

Задан 27/08/2008 в 02:32
источник пользователем
На других языках...                            


7 ответов

голоса
23

Map map = new HashMap();
Hashtable ht = new Hashtable();

Оба класса может быть найден из пакета java.util. Разница между 2 объясняется в следующей записи jGuru Справка .

Ответил 27/08/2008 в 02:40
источник пользователем

голоса
19

Вы можете использовать двойные фигурные скобки, чтобы установить данные. Вы до сих пор называют добавить, или положить, но это менее некрасиво:

private static final Hashtable<String,Integer> MYHASH = new Hashtable<String,Integer>() {{
    put("foo",      1);
    put("bar",      256);
    put("data",     3);
    put("moredata", 27);
    put("hello",    32);
    put("world",    65536);
 }};
Ответил 28/08/2008 в 08:34
источник пользователем

голоса
7

Также не стоит забывать , что и на карте и Hashtable являются универсальными в Java 5 и выше (как и в любом другом классе в рамках коллекций ).

Map<String, Integer> numbers = new HashMap<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);

Integer one = numbers.get("one");
Assert.assertEquals(1, one);
Ответил 27/08/2008 в 03:07
источник пользователем

голоса
2
import java.util.HashMap;

Map map = new HashMap();
Ответил 27/08/2008 в 02:38
источник пользователем

голоса
1

Что Эдмунд сказал.

Что же касается не вызывая .add всего времени, нет, не идиоматический. Там бы различное хаки (хранящее его в массиве, а затем цикл), что вы могли бы сделать, если вы действительно хотите, но я бы не рекомендовал его.

Ответил 27/08/2008 в 02:45
источник пользователем

голоса
0

Важно отметить , что хэш - функция Java является менее оптимальным. Если вы хотите меньше столкновений и почти полное устранение повторного перемешивания при ~ 50% мощности, я хотел бы использовать алгоритм Буз Hash Буз Hash

Причина алгоритм хеширования Java является слабым является наиболее очевидной в том, как хэш строк.

"a".hash()дать вам представление ASCII "a"- 97так "b"будет 98. Весь смысл хеширования состоит в назначении произвольного и «как случайный , как это возможно» номер.

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

Ответил 26/10/2012 в 03:57
источник пользователем

голоса
0

И есть ли способ, чтобы заполнить таблицу со списком кнопочной> пар значений без индивидуально вызова метода надстройки на объекте для каждой пары?

Одна из проблем, с вопросом является то, что вы не говоря уже о том, в какой форме данные в, чтобы начать с. Если список пар оказался список объектов Map.Entry было бы довольно легко.

Просто выбросить это, существует (много клевета) класс имени java.util.Properties, что является продолжением Hashtable. Он ожидает, что ключи только строк и значение и позволяет загружать и хранить данные, используя файлы или потоки. Формат файла он считывает и записывает выглядит следующим образом:

key1=value1
key2=value2

Я не знаю, если это то, что вы ищете, но бывают ситуации, когда это может быть полезным.

Ответил 27/08/2008 в 16:15
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more