Закрыть
×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "flex"; // !!!!! block document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Праздники ...
Праздники ...
День Октябрьской революции (7 Ноября)
Концерты, выставки ...
Концерты, выставки ...
Спектакль "Кот в сапогах"|||г. Минск 13 сентября, 31 октября, 21 ноября 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Фитнес (пилатес, калланетика, стриппластика, танец живота, ...)
Спорт занятие
Компьютер, программы...
Компьютер, программы...
Объявления ...
Объявления ...
КПП МТЗ-80,90 ремонт
Объявление
Новости ...
Новости ...
Форум ...
Форум ...
обсуждение...
<<
Поиск >>
Поиск
Концерты
Спорт
Форум
Компьютер
Компьютер, программы
→
Java
→
Java (class, interface, collections, и т.д.)
class LinkedList
в Java
посмотрели
1412
раз
обновлено: 6 октября 2026
class
LinkedList
<E>
это набор узлов (Node). Каждый узел (Node) имеет 2 ссылки: ссылку на следующий узел (Node) и ссылку на предыдущий узел (Node).
LinkedList
не синхронизирован. Если несколько потоков одновременно обращаются к
LinkedList
, и хотя бы один из потоков изменяет
LinkedList
, то
LinkedList
необходимо синхронизировать.
LinkedList
реализует
interface List<E>
это массив т.е. можно добавлять и удалять элементы, получить элемент по индексу
реализует
interface Queue<E>
это очередь т.е. добавление, удаление элементов по алгоритму: первым вошел - первым вышел
реализует
interface Deque<E>
это двусторонняя очередь т.е. добавление, удаление элементов из начала и конца
Java
interface
List
<E>
extends
SequencedCollection<E>
{
Скрыть функции << ...
Смотрим функции >> ...
boolean
add
(E e)
void
add
(
int
index, E element)
boolean
addAll
(
Collection
<?
extends
E> c)
boolean
addAll
(
int
index,
Collection
<?
extends
E> c)
void
clear
()
boolean
contains
(
Object
o)
boolean
containsAll
(
Collection
<?> c)
boolean
equals
(
Object
o)
E
get
(
int
index)
int
hashCode
()
int
indexOf
(
Object
o)
boolean
isEmpty
()
Iterator
<E>
iterator
()
int
lastIndexOf
(
Object
o)
ListIterator
<E>
listIterator
()
ListIterator
<E>
listIterator
(
int
index)
E
remove
(
int
index)
boolean
remove
(
Object
o)
boolean
removeAll
(
Collection
<?> c)
void
replaceAll
(
UnaryOperator
<E> operator)
boolean
retainAll
(
Collection
<?> c)
E
set
(
int
index, E element)
int
size
()
void
sort
(
Comparator
<? super E> c)
Spliterator
<E>
spliterator
()
List
<E>
subList
(
int
fromIndex,
int
toIndex)
Object
[]
toArray
()
<T> T[]
toArray
(T[] a)
Stream
<E>
stream
()
}
Java
interface
Queue
<E>
extends
Collection
<E>
{
Скрыть функции << ...
Смотрим функции >> ...
boolean
offer
(E e);
// добавляем элемент в
конец
очереди
E
remove
();
//
удаляется
элемент из
начала
очереди
E
poll
();
// берем элемент из
начала
очереди, элемент
удаляется
E
element
();
// смотрим элемент в
начале
очереди
E
peek
();
// смотрим элемент в
начале
очереди
}
Java
interface
Deque
<E>
extends
Collection
<E>
{
Скрыть функции << ...
Смотрим функции >> ...
void
addFirst
(E e);
// добавляем элемент в
начало
очереди
void
addLast
(E e);
// добавляем элемент в
конец
очереди
boolean
offerFirst
(E e);
// добавляем элемент в
начало
очереди
boolean
offerLast
(E e);
// добавляем элемент в
конец
очереди
E
removeFirst
();
//
удаляется
элемент из
начала
очереди
E
removeLast
();
//
удаляется
элемент из
конца
очереди
E
pollFirst
();
// берем элемент из
начала
очереди, элемент
удаляется
E
pollLast
();
// берем элемент из
конца
очереди, элемент
удаляется
E
getFirst
();
// смотрим элемент в
начале
очереди
E
getLast
();
// смотрим элемент в
конце
очереди
E
peekFirst
();
// смотрим элемент в
начале
очереди
E
peekLast
();
// смотрим элемент в
конце
очереди
void
push
(E e);
// добавляем элемент в
начало
очереди
E
pop
();
// берем элемент из
начала
очереди, элемент
удаляется
boolean
remove
(
Object
o);
boolean
contains
(
Object
o);
boolean
addAll
(
Collection
<?
extends
E> c);
Iterator
<E>
iterator
();
Iterator
<E>
descendingIterator
();
}
Пример 1. Вызываем функции
List
Java
Создаем новое Java консольное приложение ...
и напишем код
package
org.example;
import
java.util.LinkedList;
public
class
Program
{
public
static
void
main(
String
[] args)
{
LinkedList
<
String
> myList1 =
new
LinkedList
<
String
>();
// добавляем элемент в конец очереди
myList1.
add
(
"Car"
);
// myList1 = ["Car"]
// добавляем элемент в конец очереди
myList1.
add
(
"House"
);
// myList1 = ["Car", "House"]
// добавляем элемент в конец очереди
myList1.
add
(
"Notebook"
);
// myList1 = ["Car", "House", "Notebook"]
// посмотреть элемент по индексу
elem = myList1.
get
(1);
// elem = "House"
// myList1 = ["Car", "House", "Notebook"]
// вставить элемент по индексу 1
myList1.
add
(1,
"Airplane"
);
// myList1 = ["Car", "Airplane", "House", "Notebook"]
// удалить элемент по индексу 1
myList1.
remove
(1);
// myList1 = ["Car", "House", "Notebook"]
}
}
Пример 2. Вызываем функции
Queue
Java
Создаем новое Java консольное приложение ...
и напишем код
package
org.example;
import
java.util.LinkedList;
public
class
Program
{
public
static
void
main(
String
[] args)
{
LinkedList
<
String
> myList1 =
new
LinkedList
<
String
>();
// добавляем элемент в конец очереди
myList1.
offer
(
"Car"
);
// myList1 = ["Car"]
// добавляем элемент в конец очереди
myList1.
offer
(
"House"
);
// myList1 = ["Car", "House"]
// добавляем элемент в конец очереди
myList1.
offer
(
"Book"
);
// myList1 = ["Car", "House", "Book"]
// посмотреть элемент в начале очереди
String
elem = myList1.
peek
();
// elem = "Car"
// myList1 = ["Car", "House", "Book"]
// берем элемент из начала очереди, элемент удаляется
elem = myList1.
poll
();
// elem = "Car"
// myList1 = ["House", "Book"]
}
}
Пример 3. Вызываем функции
Deque
Java
Создаем новое Java консольное приложение ...
и напишем код
package
org.example;
import
java.util.LinkedList;
public
class
Program
{
public
static
void
main(
String
[] args)
{
LinkedList
<
String
> myList1 =
new
LinkedList
<
String
>();
/////// можно вызывать функции First & Last:
// addFirst, addLast
// offerFirst, offerLast
// peekFirst, peekLasts
// pollFirst, pollLast
// removeFirst, removeLast
myList1.
addLast
(
"Car"
);
// myList1 = ["Car"]
myList1.
addLast
(
"House"
);
// myList1 = ["Car", "House"]
myList1.
addLast
(
"Notebook"
);
// myList1 = ["Car", "House", "Notebook"]
myList1.
addFirst
(
"Airplane"
);
// myList1 = ["Airplane", "Car", "House", "Notebook"]
// посмотреть элемент в начале очереди
elem = myList1.
peekFirst
();
// elem = "Airplane"
// myList1 = ["Airplane", "Car", "House", "Notebook"]
// берем элемент из начала очереди, элемент удаляется
elem = myList1.
pollFirst
();
// elem = "Airplane"
// myList1 = ["Car", "House", "Notebook"]
// берем элемент из конца очереди, элемент удаляется
elem = myList1.
pollLast
();
// elem = "Notebook"
// myList1 = ["Car", "House"]
}
}
В чем примущество LinkedList перед ArrayList:
Преимущества LinkedList:
• Главное преимущество
LinkedList
перед ArrayList заключается в более эффективном добавлении и удалении элементов в начале или в середине списка, если у вас уже есть конкретный узел (Node) для этих операций.
•
Быстрая вставка и удаление в начале коллекции:
Добавление или удаление элемента в самом начале (addFirst(), removeFirst()) происходит за константное время O(1), в то время как ArrayList требует сдвига всех последующих элементов памяти O(N).
•
Отсутствие перевыделения памяти (resizing):
ArrayList
внутри себя хранит обычный массив. Когда он заполнится,
Java
создает новый, более крупный массив и копирует туда старые данные — это дорогая операция. LinkedList состоит из отдельных узлов (Node), связанных ссылками, поэтому он может расти бесконечно без пересоздания структуры.
•
Реализация интерфейса Deque (Очередь):
LinkedList
реализует интерфейс Deque (двустороннюю очередь), что позволяет использовать его как полноценную очередь с методами offer(), poll(), peek().
Когда LinkedList проигрывает ArrayList?
•
Доступ по индексу:
У
ArrayList
он происходит мгновенно O(1), а у
LinkedList
— медленно O(N), так как приходится идти по ссылкам с самого начала или конца.
•
Потребление памяти:
тратит больше памяти, так как каждый его элемент хранит не только само значение, но и две ссылки (на следующий и предыдущий элементы).
Документация
Java
class
LinkedList
<E>
extends
AbstractSequentialList<E>
implements
List
<E>,
Deque
<E>,
Cloneable
, java.io.Serializable
{
transient
int
size
= 0;
transient
Node<E>
first
;
transient
Node<E>
last
;
private
static
class
Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
public
LinkedList
() {
}
public
LinkedList
(
Collection
<?
extends
E> c) {
this();
addAll(c);
}
public
E
getFirst
() {
final
Node<E> f = first;
if
(f == null)
throw
new
NoSuchElementException();
return
f.item;
}
public
E
getLast
() {
final
Node<E> l = last;
if
(l == null)
throw
new
NoSuchElementException();
return
l.item;
}
public
E
removeFirst
() {
final
Node<E> f = first;
if
(f == null)
throw
new
NoSuchElementException();
return
unlinkFirst(f);
}
public
E
removeLast
() {
final
Node<E> l = last;
if
(l == null)
throw
new
NoSuchElementException();
return
unlinkLast(l);
}
public
void
addFirst
(E e) {
linkFirst(e);
}
public
void
addLast
(E e) {
linkLast(e);
}
public
boolean
contains
(
Object
o) {
return
indexOf(o) >= 0;
}
public
int
size
() {
return
size;
}
public
boolean
add
(E e) {
linkLast(e);
return
true;
}
public
boolean
remove
(
Object
o) {
if
(o == null) {
for
(Node<E> x = first; x != null; x = x.next) {
if
(x.item == null) {
unlink(x);
return
true;
}
}
}
else
{
for
(Node<E> x = first; x != null; x = x.next) {
if
(o.equals(x.item)) {
unlink(x);
return
true;
}
}
}
return
false;
}
public
boolean
addAll
(
Collection
<?
extends
E> c) {
return
addAll(size, c);
}
public
boolean
addAll
(
int
index,
Collection
<?
extends
E> c) {
checkPositionIndex(index);
Object
[] a = c.toArray();
int
numNew = a.length;
if
(numNew == 0)
return
false;
Node<E> pred, succ;
if
(index == size) {
succ = null;
pred = last;
}
else
{
succ = node(index);
pred = succ.prev;
}
for
(
Object
o : a) {
@SuppressWarnings(
"unchecked"
) E e = (E) o;
Node<E> newNode =
new
Node<>(pred, e, null);
if
(pred == null)
first = newNode;
else
pred.next = newNode;
pred = newNode;
}
if
(succ == null) {
last = pred;
}
else
{
pred.next = succ;
succ.prev = pred;
}
size += numNew;
modCount++;
return
true;
}
public
void
clear
() {
// Clearing all of the links between nodes is "unnecessary", but:
// - helps a generational GC if the discarded nodes inhabit
// more than one generation
// - is sure to free memory even if there is a reachable Iterator
for
(Node<E> x = first; x != null; ) {
Node<E> next = x.next;
x.item = null;
x.next = null;
x.prev = null;
x = next;
}
first = last = null;
size = 0;
modCount++;
}
public
E
get
(
int
index) {
checkElementIndex(index);
return
node(index).item;
}
public
E
set
(
int
index, E element) {
checkElementIndex(index);
Node<E> x = node(index);
E oldVal = x.item;
x.item = element;
return
oldVal;
}
public
void
add
(
int
index, E element) {
checkPositionIndex(index);
if
(index == size)
linkLast(element);
else
linkBefore(element, node(index));
}
public
E
remove
(
int
index) {
checkElementIndex(index);
return
unlink(node(index));
}
// Search Operations
public
int
indexOf
(
Object
o) {
int
index = 0;
if
(o == null) {
for
(Node<E> x = first; x != null; x = x.next) {
if
(x.item == null)
return
index;
index++;
}
}
else
{
for
(Node<E> x = first; x != null; x = x.next) {
if
(o.equals(x.item))
return
index;
index++;
}
}
return
-1;
}
public
int
lastIndexOf
(
Object
o) {
int
index = size;
if
(o == null) {
for
(Node<E> x = last; x != null; x = x.prev) {
index--;
if
(x.item == null)
return
index;
}
}
else
{
for
(Node<E> x = last; x != null; x = x.prev) {
index--;
if
(o.equals(x.item))
return
index;
}
}
return
-1;
}
// Queue operations.
public
E
peek
() {
final
Node<E> f = first;
return
(f == null) ? null : f.item;
}
public
E
element
() {
return
getFirst();
}
public
E
poll
() {
final
Node<E> f = first;
return
(f == null) ? null : unlinkFirst(f);
}
public
E
remove
() {
return
removeFirst();
}
public
boolean
offer
(E e) {
return
add(e);
}
public
boolean
offerFirst
(E e) {
addFirst(e);
return
true;
}
public
boolean
offerLast
(E e) {
addLast(e);
return
true;
}
public
E
peekFirst
() {
final
Node<E> f = first;
return
(f == null) ? null : f.item;
}
public
E
peekLast
() {
final
Node<E> l = last;
return
(l == null) ? null : l.item;
}
public
E
pollFirst
() {
final
Node<E> f = first;
return
(f == null) ? null : unlinkFirst(f);
}
public
E
pollLast
() {
final
Node<E> l = last;
return
(l == null) ? null : unlinkLast(l);
}
public
void
push
(E e) {
addFirst(e);
}
public
E
pop
() {
return
removeFirst();
}
public
boolean
removeFirstOccurrence
(
Object
o) {
return
remove(o);
}
public
boolean
removeLastOccurrence
(
Object
o) {
if
(o == null) {
for
(Node<E> x = last; x != null; x = x.prev) {
if
(x.item == null) {
unlink(x);
return
true;
}
}
}
else
{
for
(Node<E> x = last; x != null; x = x.prev) {
if
(o.equals(x.item)) {
unlink(x);
return
true;
}
}
}
return
false;
}
public
ListIterator
<E>
listIterator
(
int
index) {
checkPositionIndex(index);
return
new
ListItr(index);
}
public
Object
clone
() {
LinkedList
<E> clone = superClone();
// Put clone into "virgin" state
clone.first = clone.last = null;
clone.size = 0;
clone.modCount = 0;
// Initialize clone with our elements
for
(Node<E> x = first; x != null; x = x.next)
clone.add(x.item);
return
clone;
}
public
Object
[]
toArray
() {
Object
[] result =
new
Object
[size];
int
i = 0;
for
(Node<E> x = first; x != null; x = x.next)
result[i++] = x.item;
return
result;
}
public
<T> T[]
toArray
(T[] a) {
if
(a.length < size)
a = (T[])java.lang.reflect.Array.newInstance(
a.getClass().getComponentType(), size);
int
i = 0;
Object
[] result = a;
for
(Node<E> x = first; x != null; x = x.next)
result[i++] = x.item;
if
(a.length > size)
a[size] = null;
return
a;
}
public
Spliterator
<E>
spliterator
() {
return
new
LLSpliterator<>(this, -1, 0);
}
public
LinkedList
<E>
reversed
() {
return
new
ReverseOrderLinkedListView<>(this, super.reversed(), Deque.super.reversed());
}
}
Подробнее о методах в Java документации:
https://docs.oracle.com ...
← Предыдущая тема
interface Deque<E> в Java
Следующая тема →
interface Set в Java
Ваши Отзывы ... комментарии ...
Вашe имя
Ваш комментарий
(www ссылки может добавлять только залогиненный пользователь)
+ картинку
Скачать и установить
•
Установка JDK (скачиваем и устанавливаем библиотеку Java для Windows)
•
Скачать и установить IntelliJ IDEA для изучения Java, Spring, Jakarta EE | Функциональность и отличия: Community | Ultimate
•
Error "JDK is missing" | Java
Java (class, interface, collections, и т.д.)
•
Создание простого консольного приложения в IntelliJ IDEA для изучения Java
•
Модификаторы доступа (private, protected, public) для класса и для методов, полей. | Java
•
Коллекции в Java
•
interface List<E> в Java
•
class ArrayList<E> в Java
•
class Vector<E> в Java
•
class Stack<E> в Java
•
class CopyOnWriteArrayList<E> в Java
•
interface Queue<E> в Java
•
interface Deque<E> в Java
•
class LinkedList<E> в Java
•
interface Set в Java
•
class HashSet<E> в Java
•
class LinkedHashSet<E> в Java
•
Collections.singletonList("Hello") возвращает неизменяемый список, содержащий ровно один указанный элемент | Java collection
•
class Collections (все функции, алгоритмы) | Java
•
stream.filter(...) выбираем элементы по своему критерию | Java collection | Пример: allCars.stream().filter(item -> item.Price < 30000).toList()
•
Что такое interface в Java ?
•
Прямо в коде (во время выполнения) делаем имплементацию для interface | Java
•
Потоки в Java
•
lambda это безымянный метод (нет имени и не принадлежит классу) | Java
•
Исключения и обработка в Java. Пример: try {...} catch (Exception e) {...}
•
Зачем использовать throws Exception в названии функциии в Java ? Ответ: метод создает исключение и нет обработки try catch. Пример: float CalculateDensity(float mass, float volume) throws Exception { ... throw new Exception("Error! Volume is zero."); ... }
Java web приложение (сервлет, jsp страница, основная функциональность и без фрэймворков)
•
Создаем новое простое web приложение (jsp web страница) | Java, Maven
•
Создаем web сервлет (сервлет находится на веб-сервере, по запросу возвращает результат) | Java
•
Установка Tomcat web server (скачиваем и устанавливаем для Windows)
•
Проверяем, тестируем Tomcat web server (создаем новый my.hml файл)
•
Что такое Maven
•
Что такое динамическая web страница jsp (Java Server Page) ?
•
Как инсталировать Smart Tomcat plugin в Intellij Idea
•
Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java
Spring в Java (Spring Framework, Spring Data, Spring Boot, ...)
•
Что такое Spring? Зачем в Java использовать Spring?
•
Что такое Spring Bean? Что такое Spring Container? IoC (inversion of control) | Создание простого Spring проекта и конфигурациия Spring Container в XML файле | Редактор IntelliJ Idea и язык Java
•
Что такое Dependency Injection в Spring? Создание простого Spring проекта с Dependency Injection в конструкторе с атрибутами @Component, @Autowired | Редактор IntelliJ Idea и язык Java
•
Создаем новое Spring Web приложение (запрос идет в Controller → Controller создает ответ как текст или json) | Java, Spring Web, Spring Boot, Maven
•
Создаем новое Spring WebSocket приложение (Java WebSocket шлет сообщение к JavaScript WebSocket) | Java, Spring WebSocket, Spring Boot, Maven
•
Создаем Azure Web App с типом Java (бесплатно). То есть создаем пустой web server
•
Java Spring web приложение кладем в Azure
•
К приложению Azure Web App (Java) соединяемся через FTP | используем File Explorer
•
Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java, Spring Boot
•
Как инсталировать Spring WebSocket plugin в Intellij Idea
Jakarta EE / Java EE в Java (web приложения, web сервисы)
•
Что такое Jakarta EE (Java EE) ? | В каком редакторе (программе) удобно писать Jakarta EE (Java EE) код?
•
Создание простого web-проекта в IntelliJ Idea Ultimate | Jakarta EE (Java EE)
Struts на Java (расширяет API Java Servlet используя MVC)
•
Что такое Struts | Java
Курсы, обучение
•
Курс "Java-разработчик" от Yandex
Собеседование
•
Собеседования на Java
Ваши вопросы присылайте по почте:
info@dir.by