# Linked Lists

LinkedList — реализует интерфейс List. Является представителем двунаправленного списка, где каждый элемент структуры содержит указатели на предыдущий и следующий элементы.

Итератор поддерживает обход в обе стороны. Реализует методы получения, удаления и вставки в начало, середину и конец списка. Позволяет добавлять любые элементы, в том числе и null.

Класс LinkedList -это обощенный класс со следующим объявлением.

```
class LinkedList<T>
```

T - тип сохраняемого объекта.Этот класс имеет следующие два конструктора:

```
LinkedList()
LinkedList(Collection<? extends E> c)
```

Мы можем использовать следующие методы при работе с данной коллекцией:

Для добавления элементов в начало списка:

```
addFirst() или offerFirst()
```

Для добавления элементов в конец списка:

```
addLast() или offerLast()
```

Чтобы получить первый элемент используют:

```
getFirst() или peekFirst()
```

Для удаления первого элемента можно использовать следующие методы:

```
removeFirst() или pollFirst()
```

Для удаления последнего элемента применяют:

```
removeLast() или pollLast()
```

Пример:

```
import java.util.*; 

class LinkedListExample { 
  public static void main(String args[]) { 

    LinkedList<String> list = new LinkedList<String>(); 

    // Add elements to the linked list. 
    list.add("F"); 
    list.add("B"); 
    list.add("D"); 
    list.add("E"); 
    list.add("C"); 
    list.addLast("Z"); 
    list.addFirst("A"); 

    System.out.println("Contents of list: " + list); 

    // Remove elements from the linked list. 
    list.remove("F"); 

    // Get and set a value. 
    String val = list.get(2); 
    list.set(2, val + " Changed"); 

    System.out.println("List after change: " + list); 
  } 
}
```

Вопрос 1.

Чем принципиально отличается LinkedList от ArrayList?

Вопрос 2.

Чем отличается метод offerFirst() от addFirst()?


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://comaqa.gitbook.io/java-automation/kollekcii/linked-lists.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
