Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная 8. Коллекции в java.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
279.3 Кб
Скачать

Интерфейс List

Интерфейс List описывает упорядоченный список. Элементы списка пронумерованы, начиная с нуля и к конкретному элементу можно обратиться по целочисленному индексу. Интерфейс List является наследником интерфейса Collection, поэтому содержит все его методы и добавляет к ним несколько своих:

add(int index, Object item) — вставляет элемент item в позицию index, при этом список раздвигается (все элементы, начиная с позиции index, увеличивают свой индекс на 1);

get(int index) — возвращает объект, находящийся в позиции index;

indexOf(Object obj) — возвращает индекс первого появления элемента obj в списке;

lastIndexOf(Object obj) — возвращает индекс последнего появления элемента obj в списке;

subList(int from, int to) — возвращает новый список, представляющий собой часть данного (начиная с позиции from до позиции to-1 включительно).

Классы коллекций

Классы коллекции, реализующие описанные выше интерфейсы, являются наследниками абстрактного класса AbstractCollection.

Класс LinkedList

LinkedList — двунаправленный список, реализующий интерфейсы List и Queue.

LinkedList содержит ряд методов для управления элементами, среди которых можно выделить следующие:

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

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

removeFirst(): удаляет первый элемент из начала списка

removeLast(): удаляет последний элемент из конца списка

getFirst(): получает первый элемент

getLast(): получает последний элемент

Рассмотрим применение связанного списка:

package colapp;

import java.util.LinkedList;

public class Colapp {

public static void main(String[] args) {

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

// добавим в список ряд элементов

states.add("Германия");

states.add("Франция");

states.addLast("Великобритания"); // добавляем на последнее место

states.addFirst("Испания"); // добавляем на первое место

states.add(1, "Италия"); // добавляем элемент по индексу 1

System.out.println("В списке "+ states.size()+ "элементов \n" );

System.out.println(states.get(1));

states.set(1, "Дания");

for(String state : states){

System.out.println(state); }

// проверка на наличие элемента в списке

if(states.contains("Германия")){

System.out.println("Список содержит государство Германия"); }

states.remove("Германия");

states.removeFirst(); // удаление первого элемента

states.removeLast(); // удаление последнего элемента

LinkedList<Person> people = new LinkedList<Person>();

people.add(new Person("Mike"));

people.addFirst(new Person("Tom"));

people.addLast(new Person("Nick"));

people.remove(1); // удаление второго элемента

for(Person p : people){

System.out.println(p.getName()); }

Person first = people.getFirst();

System.out.println(first.getName()); }}// вывод первого элемента

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

for (тип элемента коллекции:параметр имя коллекции)

{тело цикла, в котором используется параметр}

В вышеприведенном примере это уже использовано.

Если в коллекции размещены объекты разных классов иерархии, то определить, какому классу принадлежит конкретный объект, можно с помощью сравнения

if (объект.getClass()==класс.class)