![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Коллекции
До сих пор мы имели дело только с массивами, длину которых можно задавать динамически, но которая остается неизменной. А что делать, если требуется хранить данные, объемы которых изначально неизвестны. В C и Pascal для этого приходилось создавать динамические структуры данных, основанные на использовании указателей. В Java указателей нет, но тем не менее этот язык предоставлет мощные средства для решения этой проблемы. В пакете java.util.* есть интеhфейс Collection, поэтому всех его наследников называют коллекциями. На практике редко используют этот интерфейс непосредственно, чаще его расширения - List, Set и Map. Это тоже интерфейсы и на их обсуждении следует остановиться подробнее. Интерфейс List Все классы, реализующие этот интерфейс, являются списками, отсортированными по какому-либо признаку. Наиболее часто употребляются классы: ArrayList - список любых объектов, отсортированных в порядке их индексов, по сути дела, класс-обертка для массива типа Object[]; LinkedList - список, который можно использовать как стек, очередь или двунаправленную очередь. Наиболее важные методы интерфейса List, которые важно знать к экзамену: add() - добавляет элемент в список; remove() - удаляет элемент из списка; clear() - очищает список полностью. Интерфейс Set Set - это список неповторяющихся элементов. Это концептуальная модель. Каким образом достигается отсутсвие повторений, зависит от реализации. Либо новый элемент не добавляется, либо выбрасывается исключение и т.п. Наиболее важные реализации данного интерфейса: HashSet - реализация, не гарантирующая детерминированный порядок элементов в списке, этот порядок определяется значением хэш-функции; TreeSet - реализация, гарантирующая сортировку неповторяющихся элементов в естественном порядке или порядке, устанавливаемым компаратором (классом, реализующим интерфейс Comparator). Например, в случае хранения объектов типа Integer, они будут отсортированы в порядке возрастания значений метода intValue(). Интерфейс Map Этот интерфейс описывает структуру множества пар (ключ-значение) с неповторяющимися ключами. Наиболее важные его реализации следующие: HashMap - множество пар, не гарантирующее сортировку, порядок элементов определяются значениями хэш-функций ключей; TreeMap - множество пар, отсортированное по значению ключей в естественном порядке или определяемом компаратором. Ключевые методы интерфейса Map: put() - помещает в список пару ключ-значение; get() - возвращает значение по ключу. Устаревшие коллекции На экзамене вам могут попасться вопросы, связанные с колеекциями, использование которых на сегодняшний день не рекомендуется, так как им найдена замена. Тем не менее требуется их знать. Вот они: Vector - альтернатива ArrayList; Hashtable - альтернатива HashMap; Особняком стоит класс BitSet, поскольку он не реализует интерфейс Collection. Этот класс содержит вектор битов и используется крайне редко. Задание 1. Используя коллекции напишите программу, которая сортирует числа, вводимые с коммандной строки, в порядке убывания и выводит их на экран. Подсказка: удобно воспользоваться методом toArray() для того, чтобы получить из коллекции массив для вывода чисел на экран, хотя и не обязательно. Вопросы 1. Какие из перечисленных классов реализуют интерфейс Map (выберите 2)? a) Hashtable b) HashMap c) LinkedList d) TreeSet e) SortedMap f) BitSet 2. Какой из перечисленных классов наиболее подходит для хранения списка имен пользователей и паролей (выберите 1)? a) HashMap b) TreeMap c) Hashtable d) Vector e) ArrayList Ответы 1. a, b 2. a Доп. информация тут: http://java.skls.ru/MainController.jsp?loc...p;id_section=15 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |