1. Курс в Java/Android
Занятие 4
Александр Русин
e-mail: alexander.rusin@gmail.com
Android Developer
2. Интерфейсы
● List - определяет коллекцию элементов Object, по
которой можно перемещаться.
● Set - определяет коллекцию без дублирующих
элементов.
● Map - определяет коллекцию пар ключ-значение.
6. Массивы
● Данные помещаются последовательно в
специально отведенную для этого область
памяти.
● Данные в массиве должны быть одного
типа, а значит и размера.
● Время обращения к произвольному
элементу массива постоянное.
7. Массивы
● В массивах Java объекты не хранятся,
хранятся лишь указатели на объекты.
● Контейнеры на основе массивов
самостоятельно следят за размером
массива.
● Когда массив исчерпывается создается
новый, как правило размер нового массива
в два раза больше, чем старого.
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) обработчику.
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.