Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Васюткина Технология разработки програм java (Горячев).doc
Скачиваний:
135
Добавлен:
23.03.2016
Размер:
1.84 Mб
Скачать

Классы, создающие множества. Класс 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, в том же порядке.

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

Пример 4.6. Хранение комплексных чисел в упорядоченном виде 

TreeSet ts = new TreeSet(new ComplexCompare());

ts.add(new Complex(1.2, 3.4));

ts.add(new Complex(-1.25, 33.4));

ts.add(new Complex(1.23, -3.45));

ts.add(new Complex(16.2, 23.4));

Iterator it = ts.iterator();

while(it.hasNext()) {

Complex c = (Complex)it.next();

System.out.println("(" + c.Re + "; " + c.Im + ")");

}

Практические задания

  1. Изучить особенности реализации классов-коллекций в Java.

  2. Доработать программу, созданную в лабораторных работах № 2 - 3:

  1. добавить генерируемым объектам понятия «время рождения» и «время жизни». Время рождения устанавливается в момент генерации объекта, и по значению соответствует времени, прошедшему от начала симуляции. Время жизни – время, через которое объект должен исчезнуть, считая от времени рождения;

  2. вынести параметры времен жизни объектов в пользовательский интерфейс. Для каждого типа объекта должно задаваться собственное время. Рекомендуется использовать текстовые поля, но следуют помнить о проверке на ввод некорректных данных;

  3. огранизовать коллекцию сгенерированных объектов по варианту. При генерации объекта происходит добавление его в коллекцию. При обновлении времени обойдите коллекцию и удалите все объекты, время жизни которых истекло;

  4. добавить генерируемым объектам уникальные целочисленные идентификаторы (случайные числа), которые назначаются при генерации объекта. Для хранения сгенерированных идентификаторов используйте коллекцию удобную для поиска по варианту;

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

Вариант 1

Коллекция для хранения объектов: Vector

Коллекция для хранения и поиска уникальных идентификаторов: HashSet

Коллекция для хранения объектов по времени рождения: TreeMap

Вариант 2

Коллекция для хранения объектов: ArrayList

Коллекция для хранения и поиска уникальных идентификаторов: HashSet

Коллекция для хранения объектов по времени рождения: TreeMap

Вариант 3

Коллекция для хранения объектов: LinkedList

Коллекция для хранения и поиска уникальных идентификаторов: HashSet

Коллекция для хранения объектов по времени рождения: TreeMap

Вариант 4

Коллекция для хранения объектов: Vector

Коллекция для хранения и поиска уникальных идентификаторов: TreeSet

Коллекция для хранения объектов по времени рождения: HashMap

Вариант 5

Коллекция для хранения объектов: ArrayList

Коллекция для хранения и поиска уникальных идентификаторов: TreeSet

Коллекция для хранения объектов по времени рождения: HashMap

Вариант 6

Коллекция для хранения объектов: LinkedList

Коллекция для хранения и поиска уникальных идентификаторов: TreeSet

Коллекция для хранения объектов по времени рождения: HashMap

Вариант 7

Коллекция для хранения объектов: Vector

Коллекция для хранения и поиска уникальных идентификаторов: HashSet

Коллекция для хранения объектов по времени рождения: HashMap

Вариант 8

Коллекция для хранения объектов: ArrayList

Коллекция для хранения и поиска уникальных идентификаторов: HashSet

Коллекция для хранения объектов по времени рождения: HashMap

Вариант 9

Коллекция для хранения объектов: Vector

Коллекция для хранения и поиска уникальных идентификаторов: TreeSet

Коллекция для хранения объектов по времени рождения: TreeMap

Вариант 10

Коллекция для хранения объектов: ArrayList

Коллекция для хранения и поиска уникальных идентификаторов: TreeSet

Коллекция для хранения объектов по времени рождения: TreeMap