Метод get() класса LinkedList в Java
get()Метод находится в JavaLinkedListраспространённый метод, предоставляемый классом, используемый для получения элемента в указанной позиции из связного списка.LinkedListвходит в Java Collections FrameworkListкласс реализации интерфейса, который использует структуру данных двусвязного списка для хранения элементов.
get()Базовый синтаксис метода выглядит следующим образом:
E get(int index)
Где:
EУказывает тип элементов в связном спискеindexпозиция элемента, который нужно получить (отсчёт с 0)
Как работает метод get()
LinkedListизget()Метод получает элемент в указанной позиции путём обхода связного списка. ПосколькуLinkedListон реализован на основе связного списка, в отличие отArrayListтого, он не может напрямую обращаться к элементам произвольно по индексу.
При вызовеget(index)метод,LinkedListон будет:
- Проверять, является ли индекс допустимым (0 ≤ index < size)
- Начинать обход с головы или хвоста связного списка (начинать с ближайшего конца)
- Переходить от узла к узлу, пока не будет найден узел в указанной позиции
- Возвращает элемент, хранящийся в этом узле
Примеры использования
Базовое использование
Пример
public class LinkedListGetExample {
public static void main(String[] args) {
// Создаём LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Добавить элементы
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
fruits.add("Durian");
// Используйте метод get() для получения элементов
String firstFruit = fruits.get(0); // Получение первого элемента
String thirdFruit = fruits.get(2); // Получение третьего элемента
System.out.println(Первый фрукт: + firstFruit); // Вывод: Apple
System.out.println(Третий фрукт: + thirdFruit); // Вывод: Cherry
}
}
Итерация по LinkedList
Пример
public class LinkedListTraversal {
public static void main(String[] args) {
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(40);
// Используйте метод get() для перебора LinkedList
for (int i = 0; i < numbers.size(); i++) {
System.out.println(№ + i + элемента: + numbers.get(i));
}
}
}
Соображения производительности
LinkedListизget()Временная сложность метода — O(n), потому что нужно пройти по связному списку от головы или хвоста, чтобы найти элемент в указанной позиции. Это контрастирует сArrayListO(1) временной сложностью последнего.
Поэтому, если требуется частый произвольный доступ к элементам,ArrayListможет быть лучшим выбором. В то время какLinkedListработает лучше, когда часто выполняются операции вставки и удаления.
Обработка исключений
При использованииget()метода, если переданный индекс выходит за пределы диапазона (index < 0 или index ≥ size), он выброситIndexOutOfBoundsException。
Пример безопасного использования
Пример
public class SafeGetExample {
public static void main(String[] args) {
LinkedList<String> colors = new LinkedList<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");
int index = 3; // Индекс вне диапазона
try {
String color = colors.get(index);
System.out.println(color);
} catch (IndexOutOfBoundsException e) {
System.out.println(Ошибка: индекс + index + вне диапазона. Размер списка равен + colors.size());
}
}
}
Альтернативные методы
Кроме тогоget()метод,LinkedListКласс LinkedList также предоставляет другие методы для получения элементов:
getFirst(): получить первый элементgetLast(): получить последний элементpeek(): получить, но не удалять первый элемент (возвращает null, если список пуст)peekFirst(): то же, что и peek()peekLast(): получить, но не удалять последний элемент (возвращает null, если список пуст)
Пример
Пример
public class AlternativeMethods {
public static void main(String[] args) {
LinkedList<String> books = new LinkedList<>();
books.add("Программирование на Java");
books.add("Структуры данных");
books.add("Алгоритмы");
System.out.println(Первая книга: + books.getFirst());
System.out.println(Последняя книга: + books.getLast());
System.out.println("peek(): " + books.peek());
System.out.println("peekLast(): " + books.peekLast());
}
}
Лучшие практики
Избегайте частого использования метода get(): Поскольку
LinkedListизget()этот метод имеет более низкую производительность, если вам нужен частый произвольный доступ, рассмотрите использованиеArrayList。Используйте итератор для обхода: Когда вам нужно обойти
LinkedListLinkedList, использование итератора более эффективно, чем использованиеget()метода get():
Пример
for (String fruit : fruits) {
System.out.println(fruit);
}
// Или используйте итератор
Iterator<String> iterator = fruits.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
- Проверяйте диапазон индекса: Перед использованием
get()метода, лучше проверить, допустим ли индекс:
Пример
return list.get(index);
} else {
// Обработка случаев недопустимого индекса
}
Итог
LinkedListизget()Метод является базовым, но важным методом; он позволяет нам получать доступ к элементам связного списка по индексу. Хотя его производительность не так хороша, какArrayListу соответствующего метода, в некоторых сценариях (например, при частых вставках и удалениях)LinkedListон всё ещё остаётся лучшим выбором. Пониманиеget()того, как работает метод, и его характеристики производительности могут помочь нам делать более разумный выбор структур данных в реальной разработке.
Java LinkedList