Наследование и классы-коллекции

// элементу и выводим его

// Теперь указатель за концом вектора. Пройдем к началу

while (lit.hasPrevious())System.out.println(lit.previous());

}

catch (Exception e) {}

Посмотрим теперь, какие возможности предоставляют классы-коллекции Java2.

Классы, создающие списки

Класс ArrayList полностью реализует интерфейс List и итератор типа Iterator. Класс ArrayList о

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

В классе ArrayList три конструктора;

ArrayList()— создает пустой объект;

ArrayList(Collection coll) — создает объект, содержащий все элементы коллекции coll;

ArrayList (int initCapacity) — создает пустой Объект емкости initCapacity.

Единственное отличие класса ArrayList от класса Vector заключается в том, что класс ArrayList не синхронизован. Это означает что одновременное изменение экземпляра этого класса несколькими подпроцессами приведет к непредсказуемым результатам.

Сравнение элементов коллекций

Интерфейс Comparator описывает два метода сравнения:

int compare (Object obji, Object obj2) — возвращает отрицательное число, если obj1 в каком-то смысле меньше obj2; нуль, если они считаются равными; положительное число, если obj1 больше obj2. Этот метод сравнения обладает свойствами тождества, антисимметричности и транзитивности;

boolean equals (Object obj) — сравнивает данный объект с объектом obj, возвращая true, если объекты совпадают в каком-либо смысле, заданном этим методом.

Для каждой коллекции можно реализовать эти два метода, задав конкретный способ сравнения элементов, и определить объект класса SortedMap вторым конструктором. Элементы коллекции будут автоматически отсортированы в заданном порядке.

Классы, создающие множества

Класс HashSet полностью реализует интерфейс Set и итератор типа Iterator. Класс HashSet используется в тех случаях, когда надо хранить только одну копию каждого элемента.

В классе HashSet четыре конструктора:

HashSet() — создает пустой объект с показателем загруженности 0,75;

HashSet (int capacity) — создает пустой объект с начальной емкостью capacity и показателем загруженности 0,75;

HashSet (int capacity, float loadFactor) — создает пустой объект с начальной емкостью capacity и показателем загруженности loadFactor;

HashSet (Collection coll) — создает объект, содержащий все элементы коллекции coll, с емкостью, равной удвоенному числу элементов коллекции coll, но не менее 11, и показателем загруженности 0,75.

Упорядоченные множества

Класс TreeSet полностью реализует интерфейс SortedSet и итератор типа Iterator. Класс TreeSet реализован как бинарное дерево поиска, значит, его элементы хранятся в упорядоченном виде. Это значительно ускоряет поиск нужного элемента.

Порядок задается либо естественным следованием элементов, либо объектом, реализующим интерфейс сравнения Comparator.

Этот класс удобен при поиске элемента во множестве, например, для проверки, обладает ли какой-либо элемент свойством, определяющим множество.

В классе TreeSet четыре конструктора:

TreeSet() — создает пустой объект с естественным порядком элементов;

TreeSet (Comparator с) — создает пустой объект, в котором порядок задается объектом сравнения с;

TreeSet (Collection coll) — создает объект, содержащий все элементы коллекции coll, с естественным порядком ее элементов;

TreeSet (SortedMap sf) — создает объект, содержащий все элементы отображения sf, в том же порядке.

Действия с коллекциями

Коллекции предназначены для хранения элементов в удобном для дальнейшей обработки виде. Очень часто обработка заключается в сортировке элементов и поиске нужного элемента. Эти и другие методы обработки собраны в класс Collections.

Методы класса Collections

Все методы класса Collections статические, ими можно пользоваться, не создавая экземпляры классу Collections

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

Сортировка может быть сделана только в упорядочиваемой коллекции, реализующей интерфейс List. Для сортировки в классе Collections есть два метода:

static void sort (List coll) — сортирует в естественном порядке возрастания коллекцию coll, реализующую интерфейс List;

static void sort (List coll, Comparator c) — сортируетколлекциюcoll

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

static int binarySearch(List coll, Object element) — отыскивает элементelement в отсортированной в естественном порядке возрастания коллекции coll и возвращает индекс элемента или отрицательное число, если элемент не найден; отрицательное число показывает индекс, с которым элемент element был бы вставлен в коллекцию, с обратным знаком;

static int binarySearchfList coll, Object element, Comparator c) — то же, но коллекция отсортирована в порядке, определенном объектом с.

Четыре метода находят наибольший и наименьший элементы в упорядочиваемой коллекции:

static Object max (Collection coll) — возвращает наибольший в естественном порядке элемент коллекции coll;

static Object max (Collection coll, Comparator c) — то же в порядке,заданном объектом с;

static Object min (Collection coll) — возвращает наименьший в естественном порядке элемент коллекции coll;

static Object min(Collection coll, Comparator c) — то же в порядке, заданном объектом с.

Два метода "перемешивают" элементы коллекции в случайном порядке:

static void shuffle (List coll) — случайные числа задаются по умолчанию;

static void shuffle (List coll, Random r) — случайные числа определяются объектом r.

Метод reverse (List coll) меняет порядок расположения элементов на обратный.

Метод copy (List from, List to) копирует коллекцию from в коллекцию to.

Метод fill (List coll, Object element) заменяет все элементы существующей коллекции coll элементом element.

Приложение 4. Работа с датами и временем

Работа с датами и временем

Методы работы с датами и показаниями времени собраны в два класса: Calendar и Date из пакета java.util.

Объект класса Date хранит число миллисекунд, прошедших с 1 января 1970 г. 00:00:00 по Гринвичу. Это "день рождения" UNIX, он называется "Epoch".

Класс Date удобно использовать для отсчета промежутков времени в миллисекундах.

Получить текущее число миллисекунд, прошедших с момента Epoch на той машине, где выполняется программа, можно статическим методом

System.currentTimeMillis()

В классе Date два конструктора. Конструктор Date() заносит в создаваемый объект текущее время машины, на которой выполняется программа, по системным часам, а конструктор Date(long millisec) — указанное число.

Получить значение, хранящееся в объекте, можно методом long getTime(),

установить новое значение — методомsetTime(long newTime).

Страница:  1  2  3  4  5  6  7  8  9  10  11 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы