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


Некоторые коллекции в пакете java.utils не представлены самостоятельными классами. Например, очередь и список. Но для этих полезных структур данных определены соответствующие интерфейсы, то есть можно пользоваться любым классом, реализующим такой интерфейс.

Интерфейс может использоваться в качестве типа данных так же, как и класс. Разница лишь в том, что объекты интерфейсного типа нельзя создать напрямую – необходимо выбрать класс, поддерживающий этот интерфейс и вызвать его конструктор.

Пусть, к примеру, нужен список, одна из наиболее удобных и часто употребляемых структур данных.

Список – это упорядоченная последовательность элементов, каждый из которых можно получить по его позиции. Кроме того можно добавлять элементы в требуемые позиции списка и удалять их, при этом (и это главное удобство в отличие от массива) остальные элементы автоматически «раздвигаются» или «сдвигаются» так, что непрерывная связность списка сохраняется.

Список представлен в пакете java.util интерфейсом List. Можно создавать переменные этого типа и объявлять функции с таким параметром. Например, класс Game в программе игры в шашки имеет поле checkers типа List, хранящее все черные и белые шашки (объекты типа Checker). Когда шашку съедают, ее надо просто удалить из списка с помощью одного из удобных методов, определенных в интерфейсе List:

checkers.remove(check); // удаляем из списка checkers съеденную шашку check

Когда программе понадобится узнать обо всех оставшихся шашках (например, чтобы нарисовать их на экране), методgetCheckers() класса Game передаст ей список:

List ch = currentGame.getCheckers(); // здесь currentGame – объект класса Game

Теперь программа может работать с переменной ch как со списком (например, по очереди получить все его объекты).

В момент создания новой игры (т.е. в конструкторе класса Game) надо, очевидно, создать 24 шашки, расположенные на стандартных позициях и добавить их в список checkers. Но список тоже необходимо создать, а мы не можем воспользоваться конструкцией

checkers = new List();

поскольку List не является классом и не имеет конструктора. Нам нужно выбрать любой класс, реализующий интерфейс List и создать объект этого класса. Например, класс Vector

checkers = new Vector();

или класс ArrayList:

checkers = new ArrayList();

Независимо от того, какой именно класс будет выбран, поле checkers будет иметь тип List и на дальнейшую работу с ним выбор не повлияет. Можно добавлять шашки в список, удалять их из него, возвращать хранящиеся в списке шашки и т.д. посредством методов интерфейса List.



Дата добавления: 2017-01-26; просмотров: 1168;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.