🗊Презентация Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1)

Нажмите для полного просмотра!
Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №1Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №2Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №3Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №4Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №5Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №6Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №7Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №8Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №9Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №10Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №11Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №12Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №13Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №14Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №15Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №16Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №17Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №18Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №19Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №20Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №21Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №22Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №23Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №24Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №25Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №26Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №27Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №28Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №29Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №30Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №31Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №32Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №33Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №34Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №35Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №36Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №37Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №38Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №39Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №40Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №41Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №42Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №43Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №44Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №45Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №46Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1), слайд №47

Содержание

Вы можете ознакомиться и скачать презентацию на тему Программирование на Java. Collections Framework - фреймверк коллекций объектов. (Лекция 7.1). Доклад-сообщение содержит 47 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Мультимедийный курс 

Программирование на Java


Лекция 7
Collections Framework -
 фреймверк коллекций объектов

Автор:
Борисенко В.П.
Описание слайда:
Мультимедийный курс Программирование на Java Лекция 7 Collections Framework - фреймверк коллекций объектов Автор: Борисенко В.П.

Слайд 2





Коллекции
Часть 1
Описание слайда:
Коллекции Часть 1

Слайд 3





Контейнеры (коллекции) 
В пакет java.util  входит одна из самых эффективных подсистем jаvа - каркас коллекций Collections Framewoгk
Каркас коллекций  - это сложная иерархия интерфейсов и классов,  реа­лизующих современную технологию управления наборами (группами, коллекциями, контейнерами) объектов
Коллекциями называют структуры,  предназначенные для хранения однотипных  данных ссылочного типа

Все коллекции Java предназначены для хранения  объектов, т.е. потомков класса Object
Описание слайда:
Контейнеры (коллекции) В пакет java.util входит одна из самых эффективных подсистем jаvа - каркас коллекций Collections Framewoгk Каркас коллекций - это сложная иерархия интерфейсов и классов, реа­лизующих современную технологию управления наборами (группами, коллекциями, контейнерами) объектов Коллекциями называют структуры, предназначенные для хранения однотипных данных ссылочного типа Все коллекции Java предназначены для хранения объектов, т.е. потомков класса Object

Слайд 4





Контейнеры (коллекции) 


Типизированные (параметризованные) коллекции , которые появились в Java 5, позволяют ограничить попадание объектов несоответствующего типа в коллекцию на этапе компиляции
Описание слайда:
Контейнеры (коллекции) Типизированные (параметризованные) коллекции , которые появились в Java 5, позволяют ограничить попадание объектов несоответствующего типа в коллекцию на этапе компиляции

Слайд 5





Контейнеры (коллекции) 
На вершине библиотеки контейнеров Java расположены два основных интерфейса, которые представляют два принципиально  разных вида коллекций:
интерфейс Collection<E>  – группы отдельных объектов , сформированная по определенным правилам (вершина иерархии остальных коллекций)
интерфейс Map<K,V>  карта отображения– набор пар объектов  «ключ - значение», с возможностью выборки по ключу
Описание слайда:
Контейнеры (коллекции) На вершине библиотеки контейнеров Java расположены два основных интерфейса, которые представляют два принципиально разных вида коллекций: интерфейс Collection<E> – группы отдельных объектов , сформированная по определенным правилам (вершина иерархии остальных коллекций) интерфейс Map<K,V> карта отображения– набор пар объектов «ключ - значение», с возможностью выборки по ключу

Слайд 6





Массивы vs. Коллекции
И массивы, и коллекции являются объектами
Массивы не могут изменять размер
Коллекции не могут оперировать с примитивными типами
При передаче в коллекцию примитивных типов они автоматически преобразовываются в объекты с помощью процедуры Autoinboxing
   	Map<Integer, Integer> map = new 
                                           HashMap<Integer, Integer>();
	map.put(5, 42);
	System.out.println(map.get(new Integer(5)));
Описание слайда:
Массивы vs. Коллекции И массивы, и коллекции являются объектами Массивы не могут изменять размер Коллекции не могут оперировать с примитивными типами При передаче в коллекцию примитивных типов они автоматически преобразовываются в объекты с помощью процедуры Autoinboxing Map<Integer, Integer> map = new HashMap<Integer, Integer>(); map.put(5, 42); System.out.println(map.get(new Integer(5)));

Слайд 7





Интерфейс Collection 
Collection представляет собой группу объектов
Правила хранения элементов задаются нижележащими интерфейсами, сам же интерфейс Collection в java.util прямых реализаций не имеет.
Описание слайда:
Интерфейс Collection Collection представляет собой группу объектов Правила хранения элементов задаются нижележащими интерфейсами, сам же интерфейс Collection в java.util прямых реализаций не имеет.

Слайд 8





Интерфейс Collection 
Collection<E> представляет собой группу объектов
Правила хранения элементов задаются нижележащими интерфейсами, сам же интерфейс Collection<E> в java.util прямых реализаций не имеет
Интерфейс Collection расширяется тремя способами:
интерфейс List<E> – упорядоченный 
	  список, который, хранит элементы
  в порядке вставки;
интерфейс Set<E>  – множество,  
в котором нельзя хранить 
повторяющиеся элементы 
Интерфейс Queue<E> - очередь
          которая реализует FIFO–буфер
Описание слайда:
Интерфейс Collection Collection<E> представляет собой группу объектов Правила хранения элементов задаются нижележащими интерфейсами, сам же интерфейс Collection<E> в java.util прямых реализаций не имеет Интерфейс Collection расширяется тремя способами: интерфейс List<E> – упорядоченный список, который, хранит элементы в порядке вставки; интерфейс Set<E> – множество, в котором нельзя хранить повторяющиеся элементы Интерфейс Queue<E> - очередь которая реализует FIFO–буфер

Слайд 9





Списки
Часть 2
Описание слайда:
Списки Часть 2

Слайд 10





Иерархия наследования списков
Описание слайда:
Иерархия наследования списков

Слайд 11





Интерфейс List
List<E> – это список объектов
Объекты хранятся в порядке их добавления в список
В пакете java.util имеется 2 основных класса, реализующих интерфейс List:
ArrayList<E> – в нем для хранения элементов используется массив
LinkedList <E>– для хранения элементов используется двусвязный список
Описание слайда:
Интерфейс List List<E> – это список объектов Объекты хранятся в порядке их добавления в список В пакете java.util имеется 2 основных класса, реализующих интерфейс List: ArrayList<E> – в нем для хранения элементов используется массив LinkedList <E>– для хранения элементов используется двусвязный список

Слайд 12





Класс ArrayList
Класс ArrayList <E> представляет собой список динамической длины 

Данные внутри класса хранятся во внутреннем массиве

 Удаление и добавление элементов для такой коллекции представляет собой ресурсоемкую задачу, поэтому объект ArrayList<E> лучше всего подходит для хранения неизменяемых списков
Описание слайда:
Класс ArrayList Класс ArrayList <E> представляет собой список динамической длины Данные внутри класса хранятся во внутреннем массиве Удаление и добавление элементов для такой коллекции представляет собой ресурсоемкую задачу, поэтому объект ArrayList<E> лучше всего подходит для хранения неизменяемых списков

Слайд 13





Класс ArrayList
По умолчанию при создании нового объекта ArrayList создается внутренний массив длиной 10 элементов
Collection<Integer>  cl = new ArrayList<Integer> ();
Можно также создать ArrayList, задав его начальную длину
Collection<Integer>  cl = new ArrayList<Integer> (100);
 
Если длины внутреннего массива не хватает для добавления нового объекта, внутри класса создается новый массив большего объема, и все элементы старого массива копируются в новый
Описание слайда:
Класс ArrayList По умолчанию при создании нового объекта ArrayList создается внутренний массив длиной 10 элементов Collection<Integer> cl = new ArrayList<Integer> (); Можно также создать ArrayList, задав его начальную длину Collection<Integer> cl = new ArrayList<Integer> (100); Если длины внутреннего массива не хватает для добавления нового объекта, внутри класса создается новый массив большего объема, и все элементы старого массива копируются в новый

Слайд 14





Класс LinkedList
Класс LinkedList <E> реализует базовый интерфейс List <E> и представляет собой список динамической длины. Данные внутри него хранятся в виде связного списка
 В отличие от массива, который хранит объекты в последовательных ячейках памяти, связанный список хранит объекты отдельно, но вместе со ссылками на следующее и предыдущее звенья последовательности

 LinkedList<E> выполняет операции вставки и удаления в середине списка более эффективно чем ArrayList
Описание слайда:
Класс LinkedList Класс LinkedList <E> реализует базовый интерфейс List <E> и представляет собой список динамической длины. Данные внутри него хранятся в виде связного списка В отличие от массива, который хранит объекты в последовательных ячейках памяти, связанный список хранит объекты отдельно, но вместе со ссылками на следующее и предыдущее звенья последовательности LinkedList<E> выполняет операции вставки и удаления в середине списка более эффективно чем ArrayList

Слайд 15





Класс LinkedList
У LinkedList<E> представлен ряд методов, не входящих в интерфейс List:
addFirst() и addLast() - добавить в начало и в конец списка
removeFirst() и removeLast() - удалить первый и последний элементы
getFirst() и getLast() - получить первый и последний элементы
Описание слайда:
Класс LinkedList У LinkedList<E> представлен ряд методов, не входящих в интерфейс List: addFirst() и addLast() - добавить в начало и в конец списка removeFirst() и removeLast() - удалить первый и последний элементы getFirst() и getLast() - получить первый и последний элементы

Слайд 16





Интерфейс Queue<E>
Класс LinkedList<E> реализует интерфейс Queue<E>, т.е. такому списку легко придать свойства очереди

Методы интерфейса Queue<E>:
     E element() – возвращает, но не удаляет головной 
                            элемент очереди;
      boolean offer(E o) – вставляет элемент в очередь, 
                                        если возможно;
      E peek() – возвращает, но не удаляет головной 
                        элемент очереди, возвращает null, если 
                        очередь пуста;
      E poll() – возвращает и удаляет головной элемент 
                      очереди, возвращает null, если очередь пуста;
      E remove() – возвращает и удаляет головной элемент 
                             очереди
Описание слайда:
Интерфейс Queue<E> Класс LinkedList<E> реализует интерфейс Queue<E>, т.е. такому списку легко придать свойства очереди Методы интерфейса Queue<E>: E element() – возвращает, но не удаляет головной элемент очереди; boolean offer(E o) – вставляет элемент в очередь, если возможно; E peek() – возвращает, но не удаляет головной элемент очереди, возвращает null, если очередь пуста; E poll() – возвращает и удаляет головной элемент очереди, возвращает null, если очередь пуста; E remove() – возвращает и удаляет головной элемент очереди

Слайд 17





Интерфейс Deque <E>
Интерфейс Deque определяет «двунаправленную» очередь и, соответственно, методы доступа к первому и последнему элементам двусторонней очереди 
Методы обеспечивают удаление, вставку и обработку элементов
Описание слайда:
Интерфейс Deque <E> Интерфейс Deque определяет «двунаправленную» очередь и, соответственно, методы доступа к первому и последнему элементам двусторонней очереди Методы обеспечивают удаление, вставку и обработку элементов

Слайд 18





Интерфейс Deque <E>
Каждый из этих методов существует в двух формах
Одни методы создают исключительную ситуацию в случае неудачного завершения, другие возвращают какое-либо из значений (null или false в зависимости от типа операции)
 Вторая форма добавления элементов в очередь сделана специально для реализаций Deque, имеющих ограничение по размеру. В большинстве реализаций операции добавления заканчиваются успешно
Описание слайда:
Интерфейс Deque <E> Каждый из этих методов существует в двух формах Одни методы создают исключительную ситуацию в случае неудачного завершения, другие возвращают какое-либо из значений (null или false в зависимости от типа операции) Вторая форма добавления элементов в очередь сделана специально для реализаций Deque, имеющих ограничение по размеру. В большинстве реализаций операции добавления заканчиваются успешно

Слайд 19





Интерфейс Deque <E>
Методы addFirst(), addLast() вставляют элементы в начало и в конец очереди соответственно 
Метод add() унаследован от интерфейса Queue и абсолютно аналогичен методу addLast() интерфейса Deque<E>
Описание слайда:
Интерфейс Deque <E> Методы addFirst(), addLast() вставляют элементы в начало и в конец очереди соответственно Метод add() унаследован от интерфейса Queue и абсолютно аналогичен методу addLast() интерфейса Deque<E>

Слайд 20





Доступ к элементам списков
Доступ к элементам списка возможен
по индексу
с помощью итератора (Iterator)
С явным объявлением итератора
В цикле foreach
Доступ по индексу
for (int i = 0; i < list.size(); i++){
	MyClass elem = (MyClass) list.get(i); // Коллекция не 
                                                            //   типизированная
	elem.doSome();
}
Для навигации по LinkedList<E> при большом количестве объектов использование доступа по индексу неэффективно
Описание слайда:
Доступ к элементам списков Доступ к элементам списка возможен по индексу с помощью итератора (Iterator) С явным объявлением итератора В цикле foreach Доступ по индексу for (int i = 0; i < list.size(); i++){ MyClass elem = (MyClass) list.get(i); // Коллекция не // типизированная elem.doSome(); } Для навигации по LinkedList<E> при большом количестве объектов использование доступа по индексу неэффективно

Слайд 21





Доступ к элементам списков
Доступ с помощью цикла foreach
List<String> list = new ArrayList<String>();
// Вывод list
for (String str : list) {
	 System.out.println(str);
}
Описание слайда:
Доступ к элементам списков Доступ с помощью цикла foreach List<String> list = new ArrayList<String>(); // Вывод list for (String str : list) { System.out.println(str); }

Слайд 22





Итераторы (Iterator<E>)
Итератор – это вспомогательный объект, используемый для перемещения в одном направлении по коллекции объектов. Он позволяет написать универсальный код, который не зависит  от типа контейнера
 
Работа с итераторами производится через интерфейс Iterator<E>, который специфицирует методы:
boolean hasNext() – проверяет  есть ли еще элементы в коллекции
Object next() – выдает  очередной элемент коллекции
void remove() – удаляет  последний выбранный элемент из коллекции.
Описание слайда:
Итераторы (Iterator<E>) Итератор – это вспомогательный объект, используемый для перемещения в одном направлении по коллекции объектов. Он позволяет написать универсальный код, который не зависит от типа контейнера Работа с итераторами производится через интерфейс Iterator<E>, который специфицирует методы: boolean hasNext() – проверяет есть ли еще элементы в коллекции Object next() – выдает очередной элемент коллекции void remove() – удаляет последний выбранный элемент из коллекции.

Слайд 23





Итераторы (Iterator)
Получить итератор для прохода коллекции можно с помощью метода iterator(), который определен у интерфейса Collection<E>
 		for (Iterator<String> iter = collection.iterator(); iter.hasNext();) 
   {
            MyClass element = (MyClass) iter.next();
            element.doSome();
        }	
В случае, если в процессе навигации по коллекции ее содержимое изменилось (например, из другого потока), методы доступа к элементам коллекции по итератору будут бросать исключение ConcurrentModificationException
Описание слайда:
Итераторы (Iterator) Получить итератор для прохода коллекции можно с помощью метода iterator(), который определен у интерфейса Collection<E> for (Iterator<String> iter = collection.iterator(); iter.hasNext();) { MyClass element = (MyClass) iter.next(); element.doSome(); } В случае, если в процессе навигации по коллекции ее содержимое изменилось (например, из другого потока), методы доступа к элементам коллекции по итератору будут бросать исключение ConcurrentModificationException

Слайд 24





ListIterator
ListIterator<E> более мощная разновидность Iterator<E>, поддерживаемая только классами List
 ListIterator<E> является двусторонним, он может выдавать индексы и значения следующего и предыдущего элемента
Для создания ListIterator<E> изначально установленного на элемент с индексом n иcпользуется вызов ListIterator(n)
Описание слайда:
ListIterator ListIterator<E> более мощная разновидность Iterator<E>, поддерживаемая только классами List ListIterator<E> является двусторонним, он может выдавать индексы и значения следующего и предыдущего элемента Для создания ListIterator<E> изначально установленного на элемент с индексом n иcпользуется вызов ListIterator(n)

Слайд 25





ArrayList: index vs. Iterator
 	 ArrayList<Integer>  list = new ArrayList();
     for (int i=0; i<100000; i++) 
       list.add(i);
     long a = System.currentTimeMillis();
     for (int i=0, n=list.size(); i < n; i++)
         list.get(i);
     System.out.println(System.currentTimeMillis()-a);
     a = System.currentTimeMillis();
     for (Iterator i=list.iterator(); i.hasNext(); )
         i.next();
     System.out.println(System.currentTimeMillis()-a);
Описание слайда:
ArrayList: index vs. Iterator ArrayList<Integer> list = new ArrayList(); for (int i=0; i<100000; i++) list.add(i); long a = System.currentTimeMillis(); for (int i=0, n=list.size(); i < n; i++) list.get(i); System.out.println(System.currentTimeMillis()-a); a = System.currentTimeMillis(); for (Iterator i=list.iterator(); i.hasNext(); ) i.next(); System.out.println(System.currentTimeMillis()-a);

Слайд 26





LinkedList: index vs. Iterator
 	 LinkedList<Integer> list2 = new LinkedList();
     for (int i=0; i<100000; i++) 
       list2.add(i);
     a = System.currentTimeMillis();
     for (int i=0, n=list2.size(); i < n; i++)
         list2.get(i);
     System.out.println(System.currentTimeMillis()-a);
     a = System.currentTimeMillis();
     for (Iterator i=list2.iterator(); i.hasNext(); )
         i.next();
     System.out.println(System.currentTimeMillis()-a);
Описание слайда:
LinkedList: index vs. Iterator LinkedList<Integer> list2 = new LinkedList(); for (int i=0; i<100000; i++) list2.add(i); a = System.currentTimeMillis(); for (int i=0, n=list2.size(); i < n; i++) list2.get(i); System.out.println(System.currentTimeMillis()-a); a = System.currentTimeMillis(); for (Iterator i=list2.iterator(); i.hasNext(); ) i.next(); System.out.println(System.currentTimeMillis()-a);

Слайд 27





ArrayList vs. LinkedList
Описание слайда:
ArrayList vs. LinkedList

Слайд 28





Иерархия наследования множеств
Описание слайда:
Иерархия наследования множеств

Слайд 29





Интерфейс Set
Set <T>– множество неповторяющихся объектов
Добавление повторяющихся элементов  в Set<T> не вызывает исключений, но они не попадают в множество
Для прохода по множеству используется интерфейс итератор
Описание слайда:
Интерфейс Set Set <T>– множество неповторяющихся объектов Добавление повторяющихся элементов в Set<T> не вызывает исключений, но они не попадают в множество Для прохода по множеству используется интерфейс итератор

Слайд 30





Классы HashSet и LinkedHashSet
Классы HashSet<T> и LinkedHashSet<T> реализуют интерфейс Set<T>
Уникальность объектов в них обеспечивается благодаря использованию механизма хеширования
Ключ (хэш-код) используется вместо индекса для доступа к данным, что значительно ускоряет поиск определенного элемента
Скорость поиска существенна для коллекций с большим количеством элементов
Описание слайда:
Классы HashSet и LinkedHashSet Классы HashSet<T> и LinkedHashSet<T> реализуют интерфейс Set<T> Уникальность объектов в них обеспечивается благодаря использованию механизма хеширования Ключ (хэш-код) используется вместо индекса для доступа к данным, что значительно ускоряет поиск определенного элемента Скорость поиска существенна для коллекций с большим количеством элементов

Слайд 31





Классы HashSet и LinkedHashSet
В HashSet<T> объекты хранятся в произвольном порядке
LinkedHashSet<T> является наследником класса HashSet. Он хранит объекты в порядке их добавления
Описание слайда:
Классы HashSet и LinkedHashSet В HashSet<T> объекты хранятся в произвольном порядке LinkedHashSet<T> является наследником класса HashSet. Он хранит объекты в порядке их добавления

Слайд 32





Упорядоченные множества (SortedSet)
Интерфейс SortedSet<T> служит для спецификации упорядоченных множеств 
В JDK его реализация представлена в классе TreeSet <T> (для хранения объектов использует бинарное дерево)
Описание слайда:
Упорядоченные множества (SortedSet) Интерфейс SortedSet<T> служит для спецификации упорядоченных множеств В JDK его реализация представлена в классе TreeSet <T> (для хранения объектов использует бинарное дерево)

Слайд 33





Упорядоченные множества (SortedSet)
При добавлении объекта в дерево он сразу же размещается в необходимую позицию с учетом сортировки
 Сортировка происходит благодаря тому, что все добавляемые элементы реализуют интерфейсы Comparator и Comparable 
Обработка операций удаления и вставки объектов происходит медленнее, чем в хэш-множествах, но быстрее, чем в списках
Описание слайда:
Упорядоченные множества (SortedSet) При добавлении объекта в дерево он сразу же размещается в необходимую позицию с учетом сортировки Сортировка происходит благодаря тому, что все добавляемые элементы реализуют интерфейсы Comparator и Comparable Обработка операций удаления и вставки объектов происходит медленнее, чем в хэш-множествах, но быстрее, чем в списках

Слайд 34





Упорядоченные множества (SortedSet)
При добавлении нового объекта он становится на свое место по порядку в множестве:
Set <Integer> sorted = new TreeSet();
sorted.add(new Integer(2));
sorted.add(new Integer(3));
sorted.add(new Integer(1));
System.out.println(sorted); // Распечатает [1, 2, 3]
Описание слайда:
Упорядоченные множества (SortedSet) При добавлении нового объекта он становится на свое место по порядку в множестве: Set <Integer> sorted = new TreeSet(); sorted.add(new Integer(2)); sorted.add(new Integer(3)); sorted.add(new Integer(1)); System.out.println(sorted); // Распечатает [1, 2, 3]

Слайд 35





Интерфейс Comparable
В Java задача задания функции сравнения решается с использованием интерфейсов Comparable<T> и Comparator<T>
Интерфейс Comparable<T> предназначен для определения так называемого естественного порядка (natural ordering)
Данный интерфейс содержит всего один метод:
    public int compareTo(Object o) // сравнивает 
                                                            // объект с 
                                                            // другим объектом
Описание слайда:
Интерфейс Comparable В Java задача задания функции сравнения решается с использованием интерфейсов Comparable<T> и Comparator<T> Интерфейс Comparable<T> предназначен для определения так называемого естественного порядка (natural ordering) Данный интерфейс содержит всего один метод: public int compareTo(Object o) // сравнивает // объект с // другим объектом

Слайд 36





Интерфейс Comparable
Метод compareTo(T  t) возвращает:
отрицательное число, если this < other;
ноль, если this == other; 
положительное число, если this > other.
Дополнительным условием является то, что метод  compareTo(other) должен возвращать 0 тогда и только тогда, когда метод equals(other) возвращает true.
Описание слайда:
Интерфейс Comparable Метод compareTo(T t) возвращает: отрицательное число, если this < other; ноль, если this == other; положительное число, если this > other. Дополнительным условием является то, что метод compareTo(other) должен возвращать 0 тогда и только тогда, когда метод equals(other) возвращает true.

Слайд 37





Интерфейс Comparator
Интерфейс Comparator используется, когда метод compareTo() уже переопределен, но необходимо задать еще какой-то прядок сортировки
Интерфейс Comparator содержит один метод:
   public interface Comparator<E> {
         int compare(T a, T b);
   }
Описание слайда:
Интерфейс Comparator Интерфейс Comparator используется, когда метод compareTo() уже переопределен, но необходимо задать еще какой-то прядок сортировки Интерфейс Comparator содержит один метод: public interface Comparator<E> { int compare(T a, T b); }

Слайд 38





Интерфейс Comparator
В этом случае создается отдельный вспомогательный класс, реализующий интерфейс Comparator<E>, и уже на основании объекта этого класса будет производиться сортировка
В этом классе нужно реализовать метод 
compare(T a , T b)
Описание слайда:
Интерфейс Comparator В этом случае создается отдельный вспомогательный класс, реализующий интерфейс Comparator<E>, и уже на основании объекта этого класса будет производиться сортировка В этом классе нужно реализовать метод compare(T a , T b)

Слайд 39





Пример работы с Deque
import java.util.*;
public class DequeRunner {
	public static void printDeque(Deque<?> d){ 
			for (Object de : d) 
				System.out.println(de + "; ");
		}
	public static void main(String[] args) {
		Deque<String> deque = new ArrayDeque<String>();
			deque.add(new String("5"));
			deque.addFirst("A");
			//deque.addLast(new Integer(5));//ошибка компиляции
			System.out.println( deque.peek());
			System.out.println("Before:");
			printDeque(deque);
			deque.pollFirst();
			System.out.println ( deque.remove(5));
			System.out.println("After:");
			printDeque(deque);
	}
}
Описание слайда:
Пример работы с Deque import java.util.*; public class DequeRunner { public static void printDeque(Deque<?> d){ for (Object de : d) System.out.println(de + "; "); } public static void main(String[] args) { Deque<String> deque = new ArrayDeque<String>(); deque.add(new String("5")); deque.addFirst("A"); //deque.addLast(new Integer(5));//ошибка компиляции System.out.println( deque.peek()); System.out.println("Before:"); printDeque(deque); deque.pollFirst(); System.out.println ( deque.remove(5)); System.out.println("After:"); printDeque(deque); } }

Слайд 40





Пример работы с интерфейсом Deque 
В данном примере реализована работа с интерфейсом Deque. Методы addFirst(), addLast() вставляют элементы в начало и в конец очереди соответственно. Метод add() унаследован от интерфейса Queue и абсолютно аналогичен методу addLast() интерфейса Deque
       
В результате работы программы на консоль будет выведено:
A
Before:
A; 
5; 
false
After:
5;
Описание слайда:
Пример работы с интерфейсом Deque В данном примере реализована работа с интерфейсом Deque. Методы addFirst(), addLast() вставляют элементы в начало и в конец очереди соответственно. Метод add() унаследован от интерфейса Queue и абсолютно аналогичен методу addLast() интерфейса Deque В результате работы программы на консоль будет выведено: A Before: A; 5; false After: 5;

Слайд 41





Интерфейс Map
Интерфейс Map<K,V>; часто называют ассоциативным массивом
Map<K,V>; осуществляет отображение (mapping) множества ключей на множество значений. Т.е. объекты хранятся в нем в виде пар <ключ, значение>
Map<K,V>; позволяет получить значение по ключу.
В Map<K,V>; не может быть 2-х пар с одинаковым ключом
Описание слайда:
Интерфейс Map Интерфейс Map<K,V>; часто называют ассоциативным массивом Map<K,V>; осуществляет отображение (mapping) множества ключей на множество значений. Т.е. объекты хранятся в нем в виде пар <ключ, значение> Map<K,V>; позволяет получить значение по ключу. В Map<K,V>; не может быть 2-х пар с одинаковым ключом

Слайд 42





Методы Map<K,V>
public void put(Object key, Object value) - добавляет новую пару <ключ, значение>
public Object get(Object key) – возвращает value по заданному ключу, или null, если ничего не найдено
public Set keySet() – возвращает множество ключей
boolean	containsKey(Object key) – возвращает true, если Map содержит пару с заданным ключем
Описание слайда:
Методы Map<K,V> public void put(Object key, Object value) - добавляет новую пару <ключ, значение> public Object get(Object key) – возвращает value по заданному ключу, или null, если ничего не найдено public Set keySet() – возвращает множество ключей boolean containsKey(Object key) – возвращает true, если Map содержит пару с заданным ключем

Слайд 43





Классы HashMap и LinkedHashMap
HashMap<K,V> – расширяет AbstractMap<K,V>, используя хэш-таблицу, в которой ключи отсортированы относительно значений их хэш-кодов 
HashMap<K,V> формирует неупорядоченное множество ключей, т.е. ключи  хранятся в произвольном порядке
 LinkedHashMap<K,V> содержит ключи в порядке их добавления
Описание слайда:
Классы HashMap и LinkedHashMap HashMap<K,V> – расширяет AbstractMap<K,V>, используя хэш-таблицу, в которой ключи отсортированы относительно значений их хэш-кодов HashMap<K,V> формирует неупорядоченное множество ключей, т.е. ключи хранятся в произвольном порядке LinkedHashMap<K,V> содержит ключи в порядке их добавления

Слайд 44





Пример с использованием HashMap
  Map<String, String> map = new HashMap <String, String>();
   
   // Заполнить его чем-нибудь
   map.put("one", "111");
   map.put("two", "222");
   map.put("three", "333");
   map.put("four", "333");
  // Получить и вывести все ключи
  System.out.println("Set of keys: " + map.keySet());
   // Получить и вывести значение по ключу
   String val = map.get("one");
   System.out.println("one=" + val);
   // Получить и вывести все значения
  System.out.println("Collection of values: " + map.values());
   // Получить и вывести все пары
  System.out.println("Set of entries: " + map.entrySet());
Описание слайда:
Пример с использованием HashMap Map<String, String> map = new HashMap <String, String>(); // Заполнить его чем-нибудь map.put("one", "111"); map.put("two", "222"); map.put("three", "333"); map.put("four", "333"); // Получить и вывести все ключи System.out.println("Set of keys: " + map.keySet()); // Получить и вывести значение по ключу String val = map.get("one"); System.out.println("one=" + val); // Получить и вывести все значения System.out.println("Collection of values: " + map.values()); // Получить и вывести все пары System.out.println("Set of entries: " + map.entrySet());

Слайд 45





Внутренний интерфейс Map.Entry
Интерфейс Map.Entry<K,V> позволяет работать с объектом, который представляет собой пару <ключ, значение>
  Каждый элемент ассоциативного массива, описываемого интерфейсом Map, имеет интерфейсный тип Map.Entry

Метод entrySet(), определенный в интерфейсе Map, позволят получить все элементы ассоциативного массива в виде множества объектов типа Map.Entry
Описание слайда:
Внутренний интерфейс Map.Entry Интерфейс Map.Entry<K,V> позволяет работать с объектом, который представляет собой пару <ключ, значение> Каждый элемент ассоциативного массива, описываемого интерфейсом Map, имеет интерфейсный тип Map.Entry Метод entrySet(), определенный в интерфейсе Map, позволят получить все элементы ассоциативного массива в виде множества объектов типа Map.Entry

Слайд 46





Внутренний интерфейс Map.Entry
Интерфейс cодержит такие методы как:
boolean equals(Object o)  - проверяет эквивалентность двух пар
Object getKey() – возвращает ключ элемента (пары.)
Object getValue() – возвращает значение элемента (пары).
Object setValue(Object value) –меняет значение элемента (пары)
Проход по всем Entry :		
      
      Map<String, Integer> map = new LinkedHashMap<String, Integer>();
		map.put("one", 1);
		map.put("two", 2);
		// …		
		for (Map.Entry<String, Integer> entry : map.entrySet()) {
			System.out.println( entry.getKey() + "=" + entry.getValue());
		}
Описание слайда:
Внутренний интерфейс Map.Entry Интерфейс cодержит такие методы как: boolean equals(Object o) - проверяет эквивалентность двух пар Object getKey() – возвращает ключ элемента (пары.) Object getValue() – возвращает значение элемента (пары). Object setValue(Object value) –меняет значение элемента (пары) Проход по всем Entry : Map<String, Integer> map = new LinkedHashMap<String, Integer>(); map.put("one", 1); map.put("two", 2); // … for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println( entry.getKey() + "=" + entry.getValue()); }

Слайд 47





Синхронизированные коллекции
В CollectionsFramework большинство коллекций не синхронизировано
Кроме устаревших типа Vector
Чтобы сделать синхронизированную коллекцию, нужно воспользоваться методами класса Collections
List synchronizedList(List list)
Map synchronizedMap(Map m)
Set synchronizedSet(Set s)
и т.д.
В этих методах создается надстройка над передаваемым объектом, реализующая соотв. интерфейс и выполняющая синхронизацию в каждом из методов
Описание слайда:
Синхронизированные коллекции В CollectionsFramework большинство коллекций не синхронизировано Кроме устаревших типа Vector Чтобы сделать синхронизированную коллекцию, нужно воспользоваться методами класса Collections List synchronizedList(List list) Map synchronizedMap(Map m) Set synchronizedSet(Set s) и т.д. В этих методах создается надстройка над передаваемым объектом, реализующая соотв. интерфейс и выполняющая синхронизацию в каждом из методов



Похожие презентации
Mypresentation.ru
Загрузить презентацию