- •Лабораторная 8. Динамические структуры. Коллекции списки в c# и Java
- •Добавление элемента;
- •Динамические структуры данных
- •Списки, их виды Односвязный список
- •Двусвязный список
- •Классы c# для описания указанных типов данных Класс List и его методы
- •Класс LinkedList и его методы
- •Класс LinkedListNode представляет узел в LinkedList. Его свойства:
- •Классы-коллекции в Java
- •Классы-коллекции
- •Абстрактные классы
- •Понятие интерфейса в Java. Описание интерфейса
- •Реализация интерфейса
- •Интерфейсы-коллекции
- •Интерфейс Collection
- •Интерфейс List
- •Классы коллекций
- •Класс LinkedList
- •Лямбда - выражения в Java
- •В лямбда – выражение передаются не только данные, но и поведение
Интерфейс 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)
