
- •Лабораторная работа № 4 Работа с исключениями и коллекциями
- •Исключения в Java. Теоретические сведения
- •Использование try, catch и throw
- •Использование множественного catch и finally
- •Использование ключевого слова throws
- •Системные исключения
- •UnsupportedOperationException - обнаружена неподдерживаемая операция Коллекции (перечислимые типы) в Java. Теоретические сведения.
- •Иерархия интерфейсов коллекций
- •Назначение интерфейсов, расширяющих интерфейс Collection
- •Рабочие классы интерфейса List
- •Массив типа ArrayList
- •Методы класса ArrayList
- •Массив типа LinkedList
- •Методы класса LinkedList
- •Ассоциативные массивы в Java
- •Диаграмма интерфейса Map
- •Рабочие классы интерфейса Map
- •Задание
- •Приложение 1. Работа с датой и временем в Java
- •Приложение 2. Пример общего класса обработки ошибок, сообщений и логирования.
Методы класса 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()+", "); } //Будет напечатано: Последний, Иван++, Жан++, Иван++, |