Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прога 2012.docx
Скачиваний:
3
Добавлен:
17.09.2019
Размер:
1.45 Mб
Скачать
  1. Цикл for-each и его применение в коллекциях:

Цикл перебирает каждый элемент массива A и записывает его в переменную a, для каждого элемента массива выполняется тело цикла:

class ForEach{

public static void main(String[ ] arg){

int[ ] A= new int[ ]{1,3,2,4,6,5};

for (int a:A) { a++;System.out.print (a+” “); }

System.out.println( );

} }

Внимание! a++ изменяет элемент, но не изменяет коллекцию (для контроля – вывод при помощи обычного цикла).

  1. Математическая идея, представленная элементом Map:

Map –"словарь", содержащий пары (ключ, значение). Например (термин, разъяснение). (map – отображение). Запрещается дублирование ключей. Map - математическое понятие "однозначная функция".

Типовые операции:

put – добавить пару (ключ, значение),

get – получить значение для данного ключа,

containsKey – проверить, присутствует ли данный ключ,

containsValue –проверить, присутствует ли данное значение

size – определение размера коллекции (количества пар),

isEmpty – проверка присутствия элементов

Пример: y = x2; I = U/R и так далее.

Вопрос 29. Сравнительный анализ реализаций ArrayList и LinkedList.

ArrayList — реализует интерфейс List. Как известно, в Java массивы имеют фиксированную длину, и после того как массив создан, он не может расти или уменьшаться. ArrayList может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.

Конструктор : ArrayList< Тип > имя = new ArrayList<Тип>(); 

LinkedList — реализует интерфейс List. Является представителем двунаправленного списка, где каждый элемент структуры содержит указатели на предыдущий и следующий элементы. Итератор поддерживает обход в обе стороны. Реализует методы получения, удаления и вставки в начало, середину и конец списка. Порядок элементов соответствует последовательности добавления.

Конструктор : LinkedList<Тип> имя = new LinkedList<Тип>();

ArrayList

Реализация интерфейса  List  в виде массива переменного размера. Реализует все опциональные операции списка; разрешает добавление любых элементов, в том числе null . (Этот класс, грубо говоря, эквивалентен классу  Vector ).

  • LinkedList

Реализация интерфейса  List  в виде связного списка. Реализует все опциональные операции списка; разрешает добавление любых элементов, в том числе  null . В дополнение к методам интерфейса  List , класс  LinkedList  предоставляет однотипно названные методы для получения, удаления и вставки элемента в начало и конец списка. Эти методы позволяют использовать связные списки в качестве очередей, стеков и очередей с двусторонним доступом. 

В ArrayList  доступ к элементам  быстрее, в отличие от LinkedList в котором  операции вставки  элементов быстрее. Обращаться к элементам ArrayList можно по индексу. Обращаться к элементам LinkedList можно только пройдя все предыдущие элементы. LinkedList выгодно использовать, если количество элементов постоянно меняется. ArrayList - когда нужно часто обращаться к элементам списка.

Вопрос 30. Параметры по которым сравнивают реализации коллекций.

Основные реализации коллекций.

HashSet — множество базирующееся на хэш-кодах элементов. Порядок элементов при обходе(итерации) не определен. Не допускает дубликатов.

  • TreeSet — множество отсортированное в натуральном порядке. Не допускает дубликатов.

  • LinkedHashSet — множество базирующееся на хэш-кодах элементов. Порядок элементов соответствует последовательности добавления в коллекцию.

  • LinkedList — связанный список. Каждый элемент ссылается на 2 соседних. Порядок элементов соответствует последовательности добавления.

  • ArrayList — индексированный список. Каждому элементу соответствует индекс типа int.

  • HashMap — ассоциативный массив. В качестве уникальных ключей используется множество базирующееся на хэш-кодах. Порядок элементов не определен.

  • LinkedHashMap — ассоциативный массив. В качестве уникальных ключей используется множество базирующееся на хэш-кодах. Порядок элементов соответствует последовательности добавления.

  • TreeMap — ассоциативный массив. В качестве уникальных ключей используется отсортированное в натуральном порядке множество.

«±» означает, что функция для коллекции доступна, но ее использование требует большей бдительности, т.к. может повлечь большую трату ресурсов процессора. 

Реализации коллекций отличаются способами хранения элементов данных и механизмами доступа к ним. В приведенной ниже таблице приводятся характеристики времени, требуемого на выполнение основных операций в различных реализациях коллекций (а именно, тип зависимости затрачиваемого на выполнение операции времени от размера коллекции):

По поводу реализаций Map :

Класс HashMap полностью реализует интерфейс  Map , а также итератор типа iterator . Класс  HashMap   очень похож на класс  Hashtabie   и может использоваться в тех же ситуациях.

Класс  ТгееМар  полностью реализует интерфейс  sortedMap . Он реализован как бинарное дерево поиска, значит его элементы хранятся в упорядоченном виде. Это  значительно ускоряет поиск нужного элемента.

Порядок задается либо естественным следованием элементов, либо объектом, реализующим интерфейс сравнения Comparator.