Ну, цепочка происходит, когда у вас есть столкновение в индексах.
Предположим, у вас есть TABLE_SIZE = 10
Теперь вы должны хранить строку abc
, поэтому вы получите хеш как 4
Теперь, когда вы собираетесь хранить строку cba
, вы получите тот же хеш 4
Итак, теперь для хранения cba
по тому же индексу вы создадите и сохраните список по индексу 4
.
Список будет содержать как abc
, так и bca
. Этот список называется chain
, а этот процесс хранения нескольких значений в одном хеше называется Chaining
.
Псевдокод выглядит так:
if(table[hash] == null)
table[hash] = new ArrayList<HashEntry>();//APPEND ON TO THE LOCATION ALREADY THERE!
table[hash].add(new HashEntry());
Таблица будет объявлена как:
@SuppressWarnings("unchecked")
List<HashEntry>[] table = new List[TABLE_SIZE];
Возможно, вам придется отключить предупреждение, поскольку массивы и генерики не работают гладко.