Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:

Error. Page cannot be displayed. Please contact your service provider for more details. (14)


Коллекции

Поиск:
Коллекции
До сих пор мы имели дело только с массивами, длину которых можно задавать динамически, но которая остается неизменной. А что делать, если требуется хранить данные, объемы которых изначально неизвестны. В 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...1&id_section=15
Автор: Складчиков Сергей Евгеньевич
Сайт: http://java.skls.ru






Просмотров: 4085

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную