
- •30.Общее представление о потоках ввода/вывода
- •31.Байтовые и символьные потоки
- •32. Определение файла. Тестирование проверка объектов File
- •34. Сериализация
- •35. Обработка исключений в Java
- •36. Многопоточное программирование
- •37. Создание потока и его жизненный цикл
- •38. Управление приоритетами и ThreadGroup
- •39. Потоки-демоны
- •40. Методы synchronized
- •41. Коллекции
- •42. Списки
- •43. 43. Множества
- •44. Карты отображений
- •45. Обзор сокетов
- •49. Дейтаграммы
- •46. Сетевые классы и интерфейсы 47. Производственные методы 48. Сокеты tcp/ip клиентов и серверов
- •50. Основы оконной графики 51. Иерархия классов awt
- •Класс Applet
- •52. Свойства класса Component
- •53. Класс Container
- •54. Наследники класса Component
- •55. Классы Choice и List
- •56. Классы TextComponent, TextField, TextArea
- •57. Наследники Container
- •58. Swing-технология
- •59. Обработка событий в Java
- •60. Классы-адаптеры
- •61. Понятие и терминология jdbc 62. Связь и различия jdbc и odbc
- •63. Драйвера, соединения и запросы
- •64. DriverManager
- •65. Создание соединения с источником данных
- •66. Интерфейсы Statement, PreparedStatement и CallableStatement
- •69. Использование потоков в апплетах
- •70. Основы xml
- •71. Xml. Схема dtd. Элемент Schema схемы xml
- •72. Ссылки xml
- •74. Язык xLink (Атрибуты связующих элементов xLink, возможные значения атрибута xlink:show, возможные значения атрибута xlink:actuate)
- •75. Язык xPointer (Синтаксис xPointer, элементы абсолютного обнаружения xPointer, выражения отношений, фильтры атрибутов и их значений)
- •76. Объектная модель документа xml – dom
- •77. Simple api для xml (sax)
- •78. Язык преобразований xslt (Операционный xslt, процесс преобразования xsl, использование xslt, преобразования xml в html)
- •80. Сервлеты: структура, назначение и преимущества
- •81. Жизненный цикл сервлета
- •83. Пакеты javax.Servlet и javax.Servlet.Http
- •84. Технология rmi. Сравнение распределенных и нераспределенных приложений
- •85. Архитектура rmi
43. 43. Множества
Интерфейс Set объявляет поведение коллекции, не допускающей дублирования элементов. Интерфейс SortedSet наследует Set и объявляет поведение набора, отсортированного в возрастающем порядке с методами first()/last(), возвращающими соответственно первый и последний элементы.
Есть Класс HashSet наследуется от абстрактного суперкласса AbstractSet и реализует интерфейс Set, используя хэш-таблицу для хранения коллекции. Ключ (хэш-код) используется вместо индекса для доступа к данным, что значительно ускоряет поиск определенного элемента. Скорость поиска существенна для коллекций с очень большим количеством элементов. Все элементы такого множества упорядочены посредством хэш-таблицы, в которой хранятся хэш-коды элементов.
Есть Класс TreeSet для хранения объектов использует бинарное дерево, главным отличием которого является сортировка его элементов. При добавлении объекта в дерево он сразу же размещается в необходимую позицию с учетом сортировки. Сортировка происходит благодаря тому, что все добавляемые элементы предположительно реализуют интерфейс Comparable. Обработка операций удаления и вставки объектов происходит медленнее, чем в хэш-множествах, но быстрее, чем в списках.
Класс TreeSet для хранения объектов использует бинарное дерево, главным отличием которого является сортировка его элементов. При добавлении объекта в дерево он сразу же размещается в необходимую позицию с учетом сортировки. Сортировка происходит благодаря тому, что все добавляемые элементы предположительно реализуют интерфейс Comparable. Обработка операций удаления и вставки объектов происходит медленнее, чем в хэш-множествах, но быстрее, чем в списках.
Класс TreeSet содержит методы по извлечению первого и последнего (наименьшего и наибольшего) элементов first() и last(). Методы SortedSet subSet(Object from, Object to), SortedSet tailSet(Object from) и SortedSet headSet(Object to) предназначены для извлечения определенной части множества.
/* пример # 5 : создание множества из списка и его методы : DemoTreeSet.java */
import java.util.*;
public class DemoTreeSet {
public static void main(String[] args) {
Collection c = new ArrayList();
boolean b;
for (int i = 0; i < 6; i++)
c.add(Integer.toString(
(int) (Math.random() * 90)) + 'Y');
System.out.println(c + "список");
TreeSet set = new TreeSet(c);
System.out.println(set + "множество");
b = set.add("5 Element"); //добавление(b=true)
b = set.add("5 Element"); //добавление(b=false)
}
}
В результате может быть выведено:
[42Y, 61Y, 55Y, 3Y, 4Y, 55Y]список
[3Y, 42Y, 4Y, 55Y, 61Y]множество
Множество инициализируется списком и сортируется сразу же в процессе создания. После добавления нового элемента производится неудачная попытка добавить его повторно. С помощью итератора элемент может быть найден и удален из множества.
44. Карты отображений
Карта отображений – это объект, который хранит пару “ключ-значение”. Поиск объекта (значения) облегчается по сравнению с множествами за счет того, что его можно найти по его уникальному ключу. Если элемент с указанным ключом отсутствует в карте, то возвращается значение null.
Классы карт отображений:
AbstractMap – реализует интерфейс Map;
HashMap – расширяет AbstractMap, используя хэш-таблицу, в которой ключи отсортированы относительно значений их хэш-кодов;
TreeMap – расширяет AbstractMap, используя дерево, где ключи расположены в виде дерева поиска в строгом порядке.
Интерфейсы карт:
Map – отображает уникальные ключи и значения;
Map.Entry – описывает пару “ключ-значение”;
SortedMap – содержит отсортированные ключи.