SlideShare a Scribd company logo
1 of 20
Download to read offline
Курс в Java/Android
                       Занятие 4




Александр Русин
e-mail: alexander.rusin@gmail.com
Android Developer
Интерфейсы

●   List - определяет коллекцию элементов Object, по
    которой можно перемещаться.
●   Set - определяет коллекцию без дублирующих
    элементов.
●   Map - определяет коллекцию пар ключ-значение.
Интерфейс реализация

List   -   ArrayList, Vector


Set    -   HashSet, TreeSet


Map    -   HashMap
Методы(Collection)
●   size() и isEmpty() // описывающие размер коллекции.

●   contains() и containsAll() // описывающие содержимое
    коллекции.

●   add(), remove() и clear() // поддерживающие управление
    содержимым коллекции.

●   toArray() // позволяет преобразовать коллекцию в
    массив.

●   Iterator() // позволяющий получить итератор массива.
Хранения данных(Collections)


●   Массивы
●   Связные списки
●   Бинарные деревья
Массивы
●   Данные помещаются последовательно в
    специально отведенную для этого область
    памяти.
●   Данные в массиве должны быть одного
    типа, а значит и размера.
●   Время обращения к произвольному
    элементу массива постоянное.
Массивы
●   В массивах Java объекты не хранятся,
    хранятся лишь указатели на объекты.
●   Контейнеры на основе массивов
    самостоятельно следят за размером
    массива.
●   Когда массив исчерпывается создается
    новый, как правило размер нового массива
    в два раза больше, чем старого.
Массивы(Контейнеры)


●   java.util.ArrayList<E>
●   java.util.ArrayDeque<E>
List
Связанные списки представляют собой
цепочку из объектов ссылающихся друг на
друга.

    private static class Entry<E> {
        E element;
        Entry<E> next;
        Entry<E> previous;
    }
List
●   Скорость доступа к произвольному
    элементу будет зависеть от его положения
    относительно головы списка
●   Контейнер java.util.LinkedList<E>
●   Контейнеры на основе связанных списков
    не стоит использовать там где необходимо
    часто обращаться к произвольному
    элементу.
Бинарные деревья
●   Служат для хранения и поиска упорядоченных объектов.

●   Необходимо определить отношение порядка при помощи
    метода compareTo и наследования от интерфейса
    java.lang.Comparable<T>

●   Скорость доступа к произвольному объекту в таких
    деревьях пропорциональна логарифму размера
    контейнера.

●   Контейнеры - java.util.TreeSet<E>, TreeMap<K,V>
Хэш-таблицы
●   В хэш-таблицах индекс определяется на основе
    хэш-функции,
●   В позиции массива хранится указатель на
    связанный список элементов у которых хэш-
    функции совпадают.
●   Контейнеры - java.util.HashSet<E>,
    java.util.HashMap<K,V>,
    java.util.WeakHashMap<K,V>.
Сортировка
public class PointAdressItem {
    // Точка
    private String points;
    // Идентификатор родителя в базе
    private String parents;
    // Расстояние от выбранного/текущего места положения
    private String distances;
    // Номер дома
    private int numberBuilding;
    // Широта
    private double latitude;
    // Долгота
    private double longitude;
    // Идентификатор объекта
    private int id;
}
Сортировка
/** Список адресов*/
private ArrayList<PointAdressItem> list;

    /** Сортировка по номеру дома */
public void sortNumberHome() {
      Collections.sort(list, new Comparator<PointAdressItem>() {
            public int compare(PointAdressItem s1, PointAdressItem s2) {
                if (s1.getNumberBuilding() - s2.getNumberBuilding() < 0) {
                    return -1;
                }
                return 1;
            }
      });
}
Обработка исключений

●   try, catch, throw, throws и finally.
●   (try) выполнить блок кода
●   (throw) исключение, которое в зависимости
    от его типа вы можете перехватить (catch)
    или передать (finally) обработчику.
Обработка исключений
try {

// блок кода }

catch (ТипИсключения1 е) {

// обработчик исключений типа ТипИсключения1 }

catch (ТипИсключения2 е) {

// обработчик исключений типа ТипИсключения2

throw(e) // повторное возбуждение исключения }

finally {}
try и catch
class Exc2 {

    public static void main(String args[]) {

    try {

            int d = 0;

            int a = 42 / d;

    } catch (ArithmeticException e) {

            System.out.println("division by zero");

        }

    }
}
Обработка исключений
class MultiCatch {
public static void main(String args[]) {
try {
     int a = args.length;
     System.out.println("a = " + a);
     int b = 42 / a;
     int c[] = { 1 };
     c[42] = 99;
     }
catch (ArithmeticException e) {
System.out.println("div by 0: " + e);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("array index oob: " + e);
}
}}
Домашнее задание
1.Сделать сортировку класса Money по
  возрастанию.
2.Реализовать очередь с классом Complex.
3.Сделать сортировку с объектами класса
  Complex.
Литература
1.http://www.ibm.com/developerworks/ru/edu/j-
  intermed/section6.html
2.http://appliedjava.wordpress.com/2010/09/23/j
  ava-collections-framework/
3.http://www.softzenware.com/java/10.htm

More Related Content

What's hot

Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»
e-Legion
 
модуль 13 использование коллекций
модуль 13 использование коллекциймодуль 13 использование коллекций
модуль 13 использование коллекций
Yevgeniy Gertsen
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collections
MERA_school
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Yandex
 
3. java lecture classes
3. java lecture classes3. java lecture classes
3. java lecture classes
MERA_school
 
8. java lecture threads
8. java lecture threads8. java lecture threads
8. java lecture threads
MERA_school
 

What's hot (17)

Talks on collections
Talks on collectionsTalks on collections
Talks on collections
 
Scala - my path
Scala - my pathScala - my path
Scala - my path
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap Database
 
Doctrine 2
Doctrine 2Doctrine 2
Doctrine 2
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
Объектное и прототипное программирование в Javascript
Объектное и прототипное программирование в JavascriptОбъектное и прототипное программирование в Javascript
Объектное и прототипное программирование в Javascript
 
Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»
 
модуль 13 использование коллекций
модуль 13 использование коллекциймодуль 13 использование коллекций
модуль 13 использование коллекций
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collections
 
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
 
C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.C++ Базовый. Занятие 12.
C++ Базовый. Занятие 12.
 
3. java lecture classes
3. java lecture classes3. java lecture classes
3. java lecture classes
 
8. java lecture threads
8. java lecture threads8. java lecture threads
8. java lecture threads
 
C++ Базовый. Занятие 06.
C++ Базовый. Занятие 06.C++ Базовый. Занятие 06.
C++ Базовый. Занятие 06.
 
Kvc, kvo
Kvc, kvoKvc, kvo
Kvc, kvo
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6
 

Viewers also liked

Scala: что, как и зачем?
Scala: что, как и зачем?Scala: что, как и зачем?
Scala: что, как и зачем?
Roman Timushev
 
Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)
Alexander Podkhalyuzin
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
ScalaNsk
 

Viewers also liked (20)

Lec 3
Lec 3Lec 3
Lec 3
 
Lec 5
Lec 5Lec 5
Lec 5
 
Scala for android
Scala for androidScala for android
Scala for android
 
Lec 11
Lec 11Lec 11
Lec 11
 
Lec 6
Lec 6Lec 6
Lec 6
 
Lec 15
Lec 15Lec 15
Lec 15
 
Lec 1
Lec 1Lec 1
Lec 1
 
Lec 14
Lec 14Lec 14
Lec 14
 
Scala: что, как и зачем?
Scala: что, как и зачем?Scala: что, как и зачем?
Scala: что, как и зачем?
 
Scala training
Scala trainingScala training
Scala training
 
Erlang
ErlangErlang
Erlang
 
Backend: Пишем на Scala для браузера
Backend: Пишем на Scala для браузераBackend: Пишем на Scala для браузера
Backend: Пишем на Scala для браузера
 
Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)Under the hood of scala implicits (kl10tch 10.03.2015)
Under the hood of scala implicits (kl10tch 10.03.2015)
 
Scala #5
Scala #5Scala #5
Scala #5
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
Scala для всех (РИФ 2015)
Scala для всех (РИФ 2015)Scala для всех (РИФ 2015)
Scala для всех (РИФ 2015)
 
Lec 2
Lec 2Lec 2
Lec 2
 
Scala lecture #4
Scala lecture #4Scala lecture #4
Scala lecture #4
 
Feature suggester
Feature suggesterFeature suggester
Feature suggester
 
Scala magic
Scala magicScala magic
Scala magic
 

Similar to Lec 4

Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
Technopark
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
metaform
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
Technopark
 
04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотека
phearnot
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libs
olegol
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
Technopark
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
Technopark
 

Similar to Lec 4 (20)

C# Desktop. Занятие 05.
C# Desktop. Занятие 05.C# Desktop. Занятие 05.
C# Desktop. Занятие 05.
 
Погружение в Dart
Погружение в DartПогружение в Dart
Погружение в Dart
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
Bytecode
BytecodeBytecode
Bytecode
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
 
Обзор Ruby
Обзор RubyОбзор Ruby
Обзор Ruby
 
course js day 2
course js day 2course js day 2
course js day 2
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
 
04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотека
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libs
 
Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage Collector
 
Underscore js
Underscore jsUnderscore js
Underscore js
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 

Lec 4

  • 1. Курс в Java/Android Занятие 4 Александр Русин e-mail: alexander.rusin@gmail.com Android Developer
  • 2. Интерфейсы ● List - определяет коллекцию элементов Object, по которой можно перемещаться. ● Set - определяет коллекцию без дублирующих элементов. ● Map - определяет коллекцию пар ключ-значение.
  • 3. Интерфейс реализация List - ArrayList, Vector Set - HashSet, TreeSet Map - HashMap
  • 4. Методы(Collection) ● size() и isEmpty() // описывающие размер коллекции. ● contains() и containsAll() // описывающие содержимое коллекции. ● add(), remove() и clear() // поддерживающие управление содержимым коллекции. ● toArray() // позволяет преобразовать коллекцию в массив. ● Iterator() // позволяющий получить итератор массива.
  • 5. Хранения данных(Collections) ● Массивы ● Связные списки ● Бинарные деревья
  • 6. Массивы ● Данные помещаются последовательно в специально отведенную для этого область памяти. ● Данные в массиве должны быть одного типа, а значит и размера. ● Время обращения к произвольному элементу массива постоянное.
  • 7. Массивы ● В массивах Java объекты не хранятся, хранятся лишь указатели на объекты. ● Контейнеры на основе массивов самостоятельно следят за размером массива. ● Когда массив исчерпывается создается новый, как правило размер нового массива в два раза больше, чем старого.
  • 8. Массивы(Контейнеры) ● java.util.ArrayList<E> ● java.util.ArrayDeque<E>
  • 9. List Связанные списки представляют собой цепочку из объектов ссылающихся друг на друга. private static class Entry<E> { E element; Entry<E> next; Entry<E> previous; }
  • 10. List ● Скорость доступа к произвольному элементу будет зависеть от его положения относительно головы списка ● Контейнер java.util.LinkedList<E> ● Контейнеры на основе связанных списков не стоит использовать там где необходимо часто обращаться к произвольному элементу.
  • 11. Бинарные деревья ● Служат для хранения и поиска упорядоченных объектов. ● Необходимо определить отношение порядка при помощи метода compareTo и наследования от интерфейса java.lang.Comparable<T> ● Скорость доступа к произвольному объекту в таких деревьях пропорциональна логарифму размера контейнера. ● Контейнеры - java.util.TreeSet<E>, TreeMap<K,V>
  • 12. Хэш-таблицы ● В хэш-таблицах индекс определяется на основе хэш-функции, ● В позиции массива хранится указатель на связанный список элементов у которых хэш- функции совпадают. ● Контейнеры - java.util.HashSet<E>, java.util.HashMap<K,V>, java.util.WeakHashMap<K,V>.
  • 13. Сортировка public class PointAdressItem { // Точка private String points; // Идентификатор родителя в базе private String parents; // Расстояние от выбранного/текущего места положения private String distances; // Номер дома private int numberBuilding; // Широта private double latitude; // Долгота private double longitude; // Идентификатор объекта private int id; }
  • 14. Сортировка /** Список адресов*/ private ArrayList<PointAdressItem> list; /** Сортировка по номеру дома */ public void sortNumberHome() { Collections.sort(list, new Comparator<PointAdressItem>() { public int compare(PointAdressItem s1, PointAdressItem s2) { if (s1.getNumberBuilding() - s2.getNumberBuilding() < 0) { return -1; } return 1; } }); }
  • 15. Обработка исключений ● try, catch, throw, throws и finally. ● (try) выполнить блок кода ● (throw) исключение, которое в зависимости от его типа вы можете перехватить (catch) или передать (finally) обработчику.
  • 16. Обработка исключений try { // блок кода } catch (ТипИсключения1 е) { // обработчик исключений типа ТипИсключения1 } catch (ТипИсключения2 е) { // обработчик исключений типа ТипИсключения2 throw(e) // повторное возбуждение исключения } finally {}
  • 17. try и catch class Exc2 { public static void main(String args[]) { try { int d = 0; int a = 42 / d; } catch (ArithmeticException e) { System.out.println("division by zero"); } } }
  • 18. Обработка исключений class MultiCatch { public static void main(String args[]) { try { int a = args.length; System.out.println("a = " + a); int b = 42 / a; int c[] = { 1 }; c[42] = 99; } catch (ArithmeticException e) { System.out.println("div by 0: " + e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("array index oob: " + e); } }}
  • 19. Домашнее задание 1.Сделать сортировку класса Money по возрастанию. 2.Реализовать очередь с классом Complex. 3.Сделать сортировку с объектами класса Complex.