Безопасный доступ к элементу списка по индексу

Замените результат на Optional<T> и реально обходите связанные узлы, а не только увеличивайте счётчик. Отрицательный индекс удобно считать ошибкой аргумента, выход за конец — Optional.empty().

Короткий ответ

Что ответить на собеседовании

Замените результат на Optional<T> и реально обходите связанные узлы, а не только увеличивайте счётчик. Отрицательный индекс удобно считать ошибкой аргумента, выход за конец — Optional.empty().

Подробный разбор

Ответ с пояснениями

Условие

Необходимо избавиться от возврата null в случае, когда запрашиваемый элемент отсутствует, заменив его более надёжным и типобезопасным механизмом, а также улучшить контракт интерфейса для корректной обработки подобных сценариев.

package com.narozhnyi;

public interface Node<T> {
    // добавление элемента
    boolean add(T val);

    // извлечение элемента по индексу
    T get(int index);
}

@Override
public T get(int index) {
    // считать счётчик = 0
    // бежать по списку до тех пор пока у нас next не будет null
    int pos = 0;
    for (int step = 0; step < index; step++) {
        if (pos == index) {
            return value;
        }
        pos++;
    }
    return null;
}

Ответ

Замените результат на Optional<T> и реально обходите связанные узлы, а не только увеличивайте счётчик. Отрицательный индекс удобно считать ошибкой аргумента, выход за конец — Optional.empty().

Новый контракт: Optional<T> get(int index). Алгоритм: установить current=head; index раз перейти к current.next, останавливаясь при null; вернуть empty для отсутствующего узла, иначе Optional.of(current.value). Для этого add должен запрещать null, чтобы существующий пустой элемент не смешивался с отсутствием. В исходном цикле ссылки вообще не меняются, а проверка pos == index стоит до достижения index. Если требуется поведение стандартного List, альтернативой является IndexOutOfBoundsException вместо Optional.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее