Похоже, вы переопределяете nodes[key]
новым словом [только] вместо добавления нового узла в список, поэтому вы теряете все старые данные, которые уже были в этот узел.
Он должен работать нормально, если там не было элементов до вызова add()
, но если они есть - вы потеряете некоторые данные.
node = new Node(word);
buckets[key] = node;
Хотя трудно быть уверенным на 100% без фактической реализации Node
.