Я в основном программист на Си, изучающий Java.Я нашел этот поток, потому что мне также было интересно, почему не было реализации связанного списка, где вы могли бы просто удалить объект напрямую, не ища его.Линейный поиск невероятно неэффективен.Список, поддерживаемый хеш-таблицей, лучше, но вы не знаете, как будет работать хеш-таблица.
Причина, по которой вы можете легко сделать это в C, состоит в том, что обычно сам объект элемента списка содержитследующий и предыдущий указатели, поэтому, учитывая объект, просто манипулировать парой указателей, чтобы удалить элемент из списка, поэтому это операция O (1).В Java у вас есть объект, но у вас нет прямого доступа к указателям, потому что они хранятся отдельно в списке.Таким образом, вы должны искать объект либо линейно, либо с помощью хеш-таблицы.
Кажется, что эту проблему можно решить, создав реализацию связанного списка, в которой каждый тип объекта, добавленный в список, должен будет реализоватьИнтерфейс LinkedListElement, который будет поддерживать получение и установку следующих и предыдущих указателей.Вам нужно будет добавить следующий и предыдущий указатели в ваш класс и реализовать функции для их получения и установки.Тогда класс списка ссылок сможет легко удалить объект, поскольку сам объект содержит указатели.