Метод set() класса Java LinkedList

Java LinkedList Java LinkedList


LinkedListявляется важным классом в Java Collections Framework, он реализуетListинтерфейс.set()метод — этоLinkedListочень полезный метод, предоставляемый классом и используемый для замены элемента в указанной позиции связного списка.

Проще говоря,set()метод позволяет вам:

  1. Обращаться к определённой позиции в связном списке по индексу
  2. Заменяет старый элемент в этой позиции новым элементом
  3. Возвращает старый элемент, который был заменён

Синтаксис метода

set()Полный синтаксис метода выглядит следующим образом:

public E set(int index, E element)

Описание параметров:

  • index: позиция элемента, который нужно заменить (счёт с 0)
  • element: новый элемент, который будет сохранён в указанной позиции

Возвращаемое значение:

  • Возвращает старый элемент, который был заменён

Пример использования

Давайте разберём на полном примере кодаset()использование метода:

Пример

import java.util.LinkedList;

public class LinkedListSetExample {
    public static void main(String[] args) {
        // Создаём LinkedList
        LinkedList<String> fruits = new LinkedList<>();
       
        // Добавить элементы
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");
        fruits.add("Date");
       
        System.out.println("Исходный LinkedList: " + fruits);
       
        // Используйте метод set() для замены второго элемента
        String replaced = fruits.set(1, "Blueberry");
       
        System.out.println("Заменённый элемент: " + replaced);
        System.out.println("Изменённый LinkedList: " + fruits);
    }
}

Вывод:

原始链表: [Apple, Banana, Cherry, Date]
被替换的元素: Banana
修改后的链表: [Apple, Blueberry, Cherry, Date]

Примечания

Исключение выхода за границы индекса

Если указанный индекс выходит за пределы диапазона связного списка (index < 0 или index >= size()),set()метод выбросит исключениеIndexOutOfBoundsException。

Пример

// Это вызовет исключение, потому что индекс 4 не существует (в связном списке только 4 элемента, диапазон индексов — 0-3)
fruits.set(4, "Инжир");

Соображения производительности

ПосколькуLinkedListреализован на основе связного списка,set()методу нужно пройти по связному списку, чтобы найти элемент в указанной позиции, следовательно:

  • Средняя временная сложность — O(n)
  • Для сценариев, требующих частого произвольного доступа,ArrayListможет быть лучшим выбором

Значения null не допускаются

ЕслиLinkedListне допускает null-элементы (в зависимости от конкретной реализации), попытка установить значение null может выбросить исключениеNullPointerException。


Сравнение с другими методами

set() против add()

  • set(): Заменяет элемент в указанной позиции
  • add(): Вставляет новый элемент в указанную позицию, сдвигая исходный элемент назад

set() против get()

  • set(): Изменяет элемент в указанной позиции и возвращает старое значение
  • get(): Только извлекает элемент в указанной позиции, не изменяя связный список

Практические сценарии применения

set()Метод особенно полезен в следующих сценариях:

  1. Обновление определённых элементов в связном списке
  2. Замена записей истории при реализации функциональности отмены/повтора
  3. Изменение данных промежуточных шагов в алгоритмах
  4. Обновление состояний объектов в разработке игр

Итог

LinkedListизset()Этот метод — простой, но мощный инструмент, позволяющий разработчикам точно изменять определённые элементы в связном списке. Понимание того, как работает этот метод, и его ограничений поможет вам более эффективно использовать его в реальном программировании.LinkedListколлекции.

Java LinkedList Java LinkedList

Другие расширения