Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коллекции 
:(
    Опции темы
Wowa
Дата 8.12.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 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
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.