Saint Petersburg, 2012 Java Lecture #1 Intro DSA Collections.

Презентация:



Advertisements
Похожие презентации
Saint Petersburg, 2011 Java Lecture #03 Luchie Praktiki.
Advertisements

Java : массивы и коллекции. Массивы Массивы простых типов: int []a = new int[10]; int []b = new int[]{ 0, 1, 2, 3, 4, 5 }; Массивы ссылочных типов (reference.
Контейнеры Сортировка Метод sort() Интерфейс Comparable метод int compareTo(Object o) вызов: Arrays.sort(a) Интерфейс Comparator метод int compare(Object.
Ассоциативные списки Поиск данных происходит не по индексу или положению объекта, а по его ассоциативной связи: public interface Map { // Доступ к объектам.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Java Collections Framework Commons-collections Коллекции в многопоточной среде Коллекции в Java.
Collections Framework Java Advanced. 2Georgiy KorneevJava Advanced / Collections Framework Содержание 1.Коллекции 2.Множества 3.Списки 4.Очереди 5.Отображения.
1 Java 10. КОЛЛЕКЦИИ Основные концепции. Интерфейсы. Списки.
Коллекции классов Лекция 12. С помощью коллекций вместо создания структур данных программист использует готовые структуры данных, не заботясь об их реализации.
1 Параметризация типов в Java public class Box { private Object object; public void add(Object object) { this.object = object; } public Object get() {
Collections Framework Java Advanced. 2Georgiy KorneevJava Advanced / Collections Framework Содержание 1.Коллекции 2.Множества 3.Списки 4.Очереди и деки.
1 Java 10. КОЛЛЕКЦИИ Множества Карты отображений.
Коллекции Итераторы Лекция 6. Коллекции Итераторы.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
Java Collections Framework (JCF) in Java Tutorial for students of universities Author: Oxana Dudnik.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Новые возможности Java 5 Java Advanced. 2Georgiy KorneevJava Advanced / Новые возможности Java 5 Краткое содержание 1.Что такое generic 2.Реализация Generic.
Saint Petersburg, 2012 Java Lecture 12 JSTL. JSP -> JSTL JSP – хорошо Что делать если хотим добавить условие? Итерирование по списку и вывод каждого элемента.
САОД, кафедра ОСУ1 Реализация списков:динамические структуры ListList classclass структура одного элемента type LIST = celltype; celltype = record.
Библиотека стандартных шаблонов (STL) ( Standard Template Library) набор согласованных обобщённых алгоритмов, контейнеров, средств доступа к их содержимому.
Транксрипт:

Saint Petersburg, 2012 Java Lecture #1 Intro DSA Collections

Java Platform 2

Java Enterprise Edition 3

Spring 4

DSL Groovy – синтаксический сахар. Скриптоподобный язык с динамической типизацией. 5 Clojure – современный диалект Lisp. Функциональный язык программирования. Scala – функциональный, объектно-ориетированный язык. AspectJ – аспект-ориетированный язык. Используется в Spring. JRuby– порт языка Ruby для JVM. Jython– порт языка Python для JVM. Используется в IBM WebSphere.

Best Practices Используйте интерфейс только для определения типов. Шаблон интерфейса констант - это неудачный вариант использования интерфейсов. 6 Проверяйте параметры в публичных методах.

Best Practices Возвращайте пустой объект, а не null 7

Best Practices 8 Для таких случаев есть паттерн Null Object

Data Structures. Collections and Generics Cтруктуры данных Collections Framework 9

Структуры данных Структуры данных нужны для эффективной организации работы с информацией Каждая структура данных имеет свои преимущества и недостатки Виды структур: o Array o Linked List o Set 10

Виды структур данных o Queue o Stack o Map o Tree 11

Collections Классы, относящиеся к Collections Framework, находятся в пакетах java.util и java.util.concurrent Collections Framework содержит готовые реализации основных структур данных и алгоритмов: списки, множества, очереди, стэки, хэш-таблицы, деревья. 12

Collection interface Интерфейс Collection содержит базовые методы работы с коллекциями (множествами элементов) Вставка: add(Object), addAll(Collection) Удаление: remove(Object), removeAll(Collection), retainAll(Collection) Поиск: contains(), containsAll(), size(), isEmpty() Просмотр: toArray(), iterator() 13

Interfaces List – упорядоченный список нумерованных элементов ArrayList LinkedList Set – набор уникальных элементов HashSet – для собственных объектов надо пересмотреть hashCode() TreeSet – поддерживает сортировку через интерфейс Comparable Queue – очередь, обычно FIFO, хранит список объектов, предназначенных для обработки. Реализации на основе массивов и связанных списков Deque BlockingQueue 14

Best Practices 15 Во имя эффективности (без обязательности ее достижения) делается больше вычислительных ошибок, чем по каким-либо иным причинам, включая непроходимую тупость. William A. Wolf Мы обязаны забывать о мелких усовершенствованиях, скажем, на 97% рабочего времени: опрометчивая оптимизация – корень всех зол. Donald E. Knuth Что касается оптимизации, то мы следуем двум правилам: Правило 1: Не делайте этого. Правило 2 (только для экспертов): пока не делайте этого – т.е. пока у вас нет абсолютно четкого, но неоптимизированного решения. M. A. Jackson

LinkedList vs ArrayList 16

Best Practices Для ссылки на объект используйте его интерфейс 17

Map interface Интерфейс Map описывает таблицу соответствий ключ-значение: словарь, DNS, foreign key etc – и методы работы с ними: Изменение: get(Object), put(Object, Object), putAll(Map), remove(Object), clear() Просмотр: keySet(), values(), entrySet() Инфо: containsKey(Object), containsValue(Object), size(), isEmpty() 18

HashMap HashMap – самая популярная реализация интерфейса Map. Основные параметры: size – количество элементов capacity - емкость таблицы load factor – коэффициент загрузки (size/capacity) threshold – порог числа эл-тов перед увеличением таблицы (capacity*load factor) HashMap(): capacity = 16, load factor = 0.75 Чем больше load factor, тем реже перехеширование. Но коллизий больше. 19

Другие Map IdentityHashMap – сравнение ключей по ссылке. WeakHashMap - использует WeakReference LinkedHashMap – сохраняет порядок вставки элементов TreeMap – аналогичен TreeSet 20

Types of Collections. Sorting and ordering. 21

Collection extends Iterable interface Collection extends Iterable {...} interface Iterator { boolean hasNext(); E next(); void remove(); } Итератор (курсор) позволяет просмотреть элементы контейнера, не принимая во внимание конечную реализацию самого контейнера. Поддерживается в конструкции for each. Итератор становится недействительным в случае изменения коллекции в процессе просмотра. 22

Collection extends Iterable interface Collection extends Iterable {...} interface Iterator { boolean hasNext(); E next(); void remove(); } Пример: Collection c = new ArrayList(); c.add("A"); c.add(1L); c.add(2.3f); Iterator i = c.iterator(); while (i.hasNext()) { Object obj = i.next(); System.out.println(obj); } 23

Sorting with java.lang.Comparable Для поддержки сортировки в Java Collections используется интерфейс Comparable, который реализуют стандартные типы данных. Чтобы сравнивать объекты необходимо реализовать метод compareTo(Object), который возвращает: 0 – если объекты равны > 0 – если this больше < 0 – если this меньше sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) (x.compareTo(y) > 0 && y.compareTo(z) > 0) -> x.compareTo(z)>0 x.compareTo(y)==0 -> sgn(x.compareTo(z)) == sgn(y.compareTo(z)) 24

Comparable example Integer extends Number implements Comparable { int compareTo(Integer anotherInteger) { int thisVal = this.value; int anotherVal = anotherInteger.value; return (thisVal < anotherVal ? -1 : (thisVal == anotherVal ? 0 : 1)); } 25

Sorting with Java.util.Comparator Также можно сравнивать объекты с помошью внешнего объекта, не изменяя код самих объектов. Для этого используется интерфейс java.util.Comparator, в котором необходимо реализовать метод compare(Object, Object) Сравнение производится по полям класса с помошью getterов Классы-компараторы нужны в случае, когда объекты сортированных коллекций не реализуют интерфейс Comparable. 26

Java.util.Collections Класс Collections содержит статические методы работы с коллекциями: Создание immutable коллекций Shuffle Сортировочки, binary Search Min, max Thread safe synchronized collections Index of sublist Etc Класс Arrays Arrays – то же самое, только с массивами Arrays, Collections & Apcahe CollectionUtils 27

Google Guava Collections Часть проекта Google Guava. Это библиотека создана из частей часто используемого кода в Google. Если хочется чего-то странного, то с большой долей вероятности это там есть. 28

Library Effective Java. Programming Language Guide Item 25. Prefer Lists to Arrays och%20arrays%20prefer&pg=PA119#v=onepage&q&f=false och%20arrays%20prefer&pg=PA119#v=onepage&q&f=false Thinking In Java by Bruce Eckel Java Interview Design Patterns - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides OReilly. Java.Generics.and_Collection s.Oct