Это потому, что java ведет себя так. Я разбью шаг за шагом ниже
Node curr = this.array[index];
Приведенный выше код указывает переменной curr
указать адрес памяти this.array[index];
. Таким образом, значение cur
будет зависеть исключительно от значения this.array[index];
. Поэтому любые изменения, которые вы делаете в this.array[index];
, отражаются в curr
.
curr = new Node(word, null);
Однако приведенный выше код устанавливает curr
для указания другого адреса памяти, который является адресом памяти new Node(word, null);
. Таким образом, из этого кода больше нет взаимосвязи относительно curr
и this.array[index];
, поэтому то, что вы делаете с curr
, не повлияет на значение this.array[index];
и наоборот.
Если я смогу не использовать переменную curr, как я могу добавить 3-й или 4-й узел к тому же массиву [index]; как связанный список. Потому что, если мне нужно использовать «this.array [index]» для прямого доступа, как я могу получить доступ / изменить 9-й или 10-й узел в этом точном массиве [index]?
У вас есть только чтобы изменить вашу addNode
функцию к этому. Обратите внимание, что это просто добавляет узел к последнему узлу этого индекса.
public void addNode(String word, int index) {
this.array[index];
if(this.array[index] == null)
{
this.array[index] = new Node(word, null);
} else {
Node curr = this.array[index]
// loop so that you can have the address of the last node
// then stop once the .next is null since this means that it is the last node
while(curr.next != null){
curr = curr.next;
}
curr.next = new Node(word, null); // set the node
}
}
ПРИМЕЧАНИЕ: Если вы хотите добавить узел между узлами в этом индексе, то у вас будет отредактировать мой код выше. Я не собираюсь кормить вас ложкой, поэтому попробуйте реализовать это самостоятельно и напишите другой вопрос в SO, если у вас возникнут проблемы.