Коллекции: алгоритмы, генерики. Приведение типов Предположения о типах объектов: void innerMethod( Object o ){ //Ошибка времени выполнения int val = (Integer)o;

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



Advertisements
Похожие презентации
Java : массивы и коллекции. Массивы Массивы простых типов: int []a = new int[10]; int []b = new int[]{ 0, 1, 2, 3, 4, 5 }; Массивы ссылочных типов (reference.
Advertisements

Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич.
Обобщения ( generics) Обобщения – это классы, структуры, интерфейсы и методы, в которых некоторые типы сами являются параметрами. Эти типы перечисляются.
Массивы в С#. Массивом называют упорядоченную последовательность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов.
Массивы Массив это величины объединенные общим именем и различаемые порядковыми номерами. Номера называются индексами. В зависимости от количества индексов.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Классы и объекты Лекция 2. Классификатор Класс Интерфейс Экземпляр класса Ассоциация Квалификатор Класс ассоциации Обобщение Украшение Тип данных Пакеты.
Контейнеры Сортировка Метод sort() Интерфейс Comparable метод int compareTo(Object o) вызов: Arrays.sort(a) Интерфейс Comparator метод int compare(Object.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
«Программирование с использованием множеств» Delphi. Тема 8:
Java Collections Framework Commons-collections Коллекции в многопоточной среде Коллекции в Java.
Высокоуровневые методы информатики и программирования Лекция 10 События.
АССОЦИАТИВНЫЕ КОЛЛЕКЦИИ Лекция 6 1. Отличие от последовательных 2 В последовательной коллекции каждый элемент ассоциируется с номером, начиная с 0. В.
PASCAL Условный оператор. Повторение.. Этот оператор используется для выполнения одного из двух возможных вариантов программы. Условный оператор если.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Новые возможности Java 5 Java Advanced. 2Georgiy KorneevJava Advanced / Новые возможности Java 5 Краткое содержание 1.Что такое generic 2.Реализация Generic.
Коллекции классов Лекция 12. С помощью коллекций вместо создания структур данных программист использует готовые структуры данных, не заботясь об их реализации.
Надо расположить команды в турнирной таблице футбольного чемпионата в порядке убывания набранных ими очков. Команд немного, всего 16. После каждого тура.
Транксрипт:

Коллекции: алгоритмы, генерики

Приведение типов Предположения о типах объектов: void innerMethod( Object o ){ //Ошибка времени выполнения int val = (Integer)o; … } void caller(){ innerMethod( 1 ); }

Проверка во время выполнения //Использование блока try/catch: try{ Object o = new String( 1.0 ); double d = (Double)o; }catch( Exception exc ){} //Проверка типа через RTTI: Object o = new String( 1.0 ); if( o instanceof String ) String s = (String)o; else if( o instanceof Integer ) int i = (Integer)o;

Autoboxing – «оборачивание» простых типов Без оборачивания: List intList = new ArrayList(); //Добавление записей: intList.add( new Integer(1) ); intList.add( new Integer(2) ); … //Использование записей из списка: Integer intObj = (Integer)intList.get(0); if( intObj.intValue() == 1 ){ … }

Autoboxing – «оборачивание» простых типов С оборачиванием: List intList = new ArrayList(); //Добавление записей: intList.add( 1 ); intList.add( 2 ); … //Использование записей из списка: if( ((Integer)intList.get(0)) == 1 ){ … } Дополнительное приведение типов, т.к. типы элементов не известны для JVM.

Обобщенные типы - Generics Generics - Используются для проверки типов во время компиляции. public interface List { void add(E x); Iterator iterator(); } List list = new ArrayList (); list.add( 1 ); list.add( 1 ); //Ошибка во время компиляции Использование generics при создании экземпляра класса ArrayList аналогично описанию и созданию экземпляра класса: public interface IntegerList { void add(Integer x); Iterator iterator(); }

Использование масок Java до версии 5: void printCollection(Collection c){ Iterator i = c.iterator(); for (k = 0; k < c.size(); k++) { System.out.println(i.next()); } Аналог с Generics: void printCollection(Collection c){ for( Object e : c ){ System.out.println(e); } Ошибочный вариант: void printCollection(Collection c) { for (Object e : c) { System.out.println(e); }

Использование масок Объявление: public void group( List list ); Использование: List list = new ArrayList (); list.add( new Woodwind() ); group( list );

Generics generics/index.html

Алгоритмы – класс Collections Реализованы, как статические методы класса java.util.Collections sort – сортировка элементов; shuffle – расположение элементов в случайном порядке; reverse – обращение порядка следования элементов; fill – заполнение всех элементов одним значением; copy – копирование коллекций; swap – обмен двух элементов; addAll – добавление всех элементов; binarySearch – поиск элемента; frequency – количество повторений элемента; disjoint – определение признака пересечений коллекций; min/max – поиск экстремума

Сортировка Метод: java.util.Collections.sort( List, Comparator )

Задание 1 Разработать программу для вывода списка пользователей с сортировкой по имени, почтовому адресу, телефону. Пользователи заданы во входном файле в формате: ФИО, , телефон … Программа должна вывести на консоль справочную информацию и ожидать ввода команд пользователя. Например, fio-asc - вывод списка пользователей с сортировкой имен в алфавитном порядке.