Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры-2 оопип часть 4.doc
Скачиваний:
46
Добавлен:
01.04.2014
Размер:
445.44 Кб
Скачать

41. Коллекции

Коллекции представляют собой реализацию абстрактных типов (структур) данных, поддерживающих две основные операции:

· вставка нового элемента в коллекцию;

· удаление элемента из коллекции.

В качестве дополнительных операций могут быть реализованы следующие: создать структуру данных, просмотреть элементы, подсчитать их количество и др.

Примером коллекции является стек (структура LIFO – Last In First Out), в котором всегда удаляется объект, вставленный последним. Для очереди (структура FIFO – First In First Out) используется другое правило удаления: всегда удаляется элемент, вставляемый первым. В абстрактных типах данных существует несколько видов очередей: двусторонние очереди, кольцевые очереди, обобщенные очереди, в которых запрещены повторяющиеся элементы. Стеки и очереди могут быть реализованы как на базе массива, так и на базе связного списка.

Коллекции объединены в библиотеку классов java.util и представляют собой контейнеры для хранения и манипулирования объектами. До появления Java 2 эта библиотека содержала классы только для работы с наиболее необходимыми структурами данных: Vector, Stack, Hashtable, BitSet, а также интерфейс Enumeration для работы с элементами этих классов. Коллекции, появившиеся в Java 2, представляют общую технологию хранения и доступа к объектам. Структура коллекций характеризует способ, с помощью которого программы Java обрабатывают группы объектов. Коллекции – это динамические массивы, связные списки, деревья, множества, хэш-таблицы, стеки, очереди. В интерфейсе Collection определены статические методы, которые работают на всех коллекциях. Другой способ работы с элементами коллекций – использование методов интерфейса Iterator, который обеспечивает средства перечисления содержимого коллекции.

Интерфейсы коллекции:

Collection – вершина иерархии коллекций;

List – расширяет коллекции для обработки списков;

Set – расширяет коллекции для обработки наборов (множеств), содержащих уникальные элементы;

Map – карта отображения вида “ключ-значение”. Интерфейс Map будет рассмотрен ниже.

Все классы коллекций реализуют также интерфейс Serializable.

42. Списки

Класс ArrayList – динамический массив объектных ссылок. Расширяет класс AbstractList и реализует интерфейс List. Класс имеет конструкторы:

ArrayList()

ArrayList(Collection c)

ArrayList(int capacity)

Практически все методы класса являются реализацией абстрактных методов из суперклассов и интерфейсов. Методы интерфейса List позволяют вставлять и удалять элементы из позиций, указываемых через отсчитываемый от нуля индекс:

void add(int index, Object obj) – вставляет obj в позицию, указанную в index;

void addAll(int index, Collection c) – вставляет в вызывающий список все элементы коллекции с, начиная с позиции index;

Object get(int index) – возвращает элемент в виде объекта из позиции index;

int indexOf(Object ob) – возвращает индекс указанного объекта;

Object remove(int index) – удаляет объект из позиции index.

Удаление элементов такой коллекции представляет собой ресурсоемкую задачу, поэтому объект ArrayList лучше всего подходит для хранения неизменяемых списков.

/* пример # 1 : работа со списком : DemoList1.java */

import java.util.*;

public class DemoList1 {

public static void main(String[] args) {

List c = new ArrayList();

//Collection c = new ArrayList();//попробуйте так!

int i = 2, j = 5;

c.add(new Integer(i));

c.add(new Boolean("True"));

c.add("<STRING>");

c.add(2, Integer.toString(j) + "X");

//заменить 2 на 5 !

System.out.println(c);

if (c.contains("5X"))

c.remove(c.indexOf("5X"));

System.out.println(c);

}

}

В результате на консоль будет выведено:

[2, true, 5X, <STRING>]

[2, true, <STRING>]

Для доступа к элементам списка может использоваться интерфейс ListIterator, в то же время класс ArrayList обладает аналогичными методами, в частности Object set(int index, Object ob), который позволяет заменить элемент списка без итератора, возвращая при этом удаляемый элемент.