Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
подгон 2018 (легендарный) / 3 курс -20241122T221211Z-001 / Java / Лабораторные / Основы Java. Лабораторная 4. Новая 1510.doc
Скачиваний:
2
Добавлен:
23.11.2024
Размер:
456.19 Кб
Скачать

Методы класса LinkedList

Название

Назначение

Сложность

add(value)

Добавляет в конец списка значение value.

O(1)

add(id, value)

Добавляет элемент внутрь списка на позицию равную id.

O(n)

addFirst(value)

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

O(1)

addLast(value)

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

O(1)

get(id)

Получить элементпо идексу id

O(n)

getFirst()

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

O(1)

getLast()

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

O(1)

set(id, value)

Изменение значения элемента по индексу id на value

O(n)

remove(id)

Удалить элемент с индексом id

O(n)

remove(value)

Найти и удалить элемент со значением, равным value

O(n)

indexOf(value)

Получить индекс элемента со значением, частично совпадающим с value

O(n)

size()

Получить размер коллекции

O(1)

contains(value)

Вернет true при наличии value, false при отсутствии

O(n)

indexOf(value)

Вернет индекс элемента со значением равным value

O(n)

Пример. Перебор элементов коллекции LinkedList

LinkedList <String> test = new LinkedList();

test.add("Иван");

test.add("Жан");

test.add("Иван");

//Перебор элементов коллекции test

for(String state : test){

System.out.println(state+", ");

}

//Будет напечатано: Иван, Жан, Иван,

Пояснения к примеру.

Приведенный выше пример позволяет получить значения элементов списка, однако не позволяет расширенную манипуляцию ими, например удаление. Для этого можно воспользоваться итератором списка — ListIterator. Говоря образно, итератор представляети из себя «окошко», которое перемещают по списку в обоих направлениях. В текущей позиции в «окошке» экземпляре итератора содержится текущий элемент списка, связанный со всем списком. Т.е. это не копия элемента, а ссылка на него. Обход списка с помощью ListIterator позволяет избавиться от контроля индекса, что необходимо делать при обходе с помощью цикла for со счетчиком.

Пример. Перебор элементов коллекции LinkedList с использованием for и ListIterator

LinkedList <String> test = new LinkedList();

test.add("Иван");

test.add("Жан");

test.add("Иван");

//Добавляем "+" к каждому элементу

for(int i=0; i<test.size(); i++) {

test.set(i, test.get(i)+"+");

}

//Список будет содержать: Иван+ Жан+ Иван+

//Создаем итератор списка

ListIterator <String> li_test = test.listIterator(0);

//Добавляем "+" к каждому элементу

while (li_test.hasNext()) {

li_test.set(li_test.next()+"+");

//li_test.add("Упс"); бесконечный цикл т.к. каждый шаг добавляет новый элемент

}

//Список будет содержать: Иван++ Жан++ Иван++

li_test.add("Последний");

while (li_test.hasPrevious()) {

System.out.print(li_test.previous()+", ");

}

//Будет напечатано: Последний, Иван++, Жан++, Иван++,