Интерфейс SortedSet и интерфейс Comparator


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

first() и last() возвращают первый и последний элементы множества.

subSet(Object fromElement, Object toElement) возвращает подмножество упорядоченного множества, содержащее элементы, большие fromElement (включая его самого) и меньше toElement. У этого метода есть две простые разновидности headSet(Object toElement) и tailSet(Object fromElement), возвращающие подмножество, состоящее из всех элементов, меньших и больших данного соответственно.

Способ упорядочения элементов описывает интерфейс Comparator. Он имеет два метода:

compare(Object obj1, Object obj2) – возвращает отрицательное число, если obj1 считается меньшим obj2, ноль, если они равны и положительное число, если obj1 больше obj2

equals(Object obj1, Object obj2) – возвращает true, если объекты считаются равными

Можно создать свой собственный способ сравнения элементов, написав класс, реализующий интерфейс Comparator и переопределив методы compare() и equals(). Класс TreeSet, например, имеет конструктор с параметром типаComparator, в который можно передать объект этого нового класса. В результате элементы множества будут отсортированы угодным нам способом.

Ассоциативные массивы

Понятие ассоциативного массива

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

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

Можно воспринимать ассоциативный массив как разновидность обычного массива, в котором индексы могут быть не только целыми числами, а произвольными объектами.

Интерфейс Map

Интерфейс Map содержит методы для работы с ассоциативным массивом:

size() – возвращает количество элементов (пар) в массиве;

containsKey(Object key) – проверяет, существует ли в массиве элемент с ключом key;

containsValue(Object value) – проверяет, существует ли в массиве элемент со значением value;

get(Object key) – возвращает значение, соответствующее ключу key;

put(Object key, Object value) – добавляет в массив элемент с ключом key и значением value. Если элемент с таким ключом уже существует в массиве, то его значение просто изменяется;

values() – возвращает значения всех элементов массива в виде коллекции (т.е. возвращаемый результат имеет тип Collection);

remove(Object key) – удаляет элемент с ключом key, возвращая значение этого элемента (если он есть) и null, если такого элемента не было;

clear() – очищает массив;

isEmpty() – проверяет, не пуст ли массив.

Каждый элемент ассоциативного массива, описываемого интерфейсом Map, имеет интерфейсный тип Map.Entry, который предоставляет три основных метода:

getKey() – возвращает ключ элемента;

getValue() – возвращает значение элемента;

setValue(Object value) – меняет значение элемента.

Метод entrySet(), определенный в интерфейсе Map, позволят получить все элементы ассоциативного массива в виде множества объектов типа Map.Entry.

Класс Hashtable

Класс Hashtable – одна из реализаций интерфейса Map.

Hashtable, как и Vector, кроме размера имеет емкость (размер буфера, выделенного под элементы массива). Помимо этого он характеризуется показателем загруженности – долей буфера, после заполнения которой емкость автоматически увеличивается. Конструктор Hashtable() без параметров создает пустой объект с емкостью в 101 элемент и показателем загруженности 0.75. Чтобы задать начальную емкость и показатель загруженности, следует воспользоваться конструктором с двумя параметрами Hashtable(int capacity, float loadFactor).

Hashtable имеет наследника – класс Properties, который вместо пар произвольных объектов хранит пары строк. Если в конкретной задаче и ключи и значения элементов ассоциативного массива должны иметь тип String (а это бывает довольно часто), удобнее воспользоваться классом Properties – не надо будет делать постоянное приведение типов.

В классе Properties определены методы getProperty(String key) и setProperty(String key, String value), работающие аналогично методам get() и put(), но принимающие параметры типа String.



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


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

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

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

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