
- •Программирование на Java
- •Глава 1 Введение в java. Основы языка.
- •Тема 1.1 Язык программирования java.
- •Тема 1.2 Состав пакета Java2.
- •Тема 1.3 Настройка среды окружения.
- •Тема 1.4 Структура Java-программы.
- •Тема 1.5 Набор текста, запуск и компиляция простейшей программы.
- •Тема 1.6 Подробное рассмотрение кода простейшей программы.
- •Тема 1.7. Создание программы в разных средах разработки.
- •Тема 1.8 Лексические основы языка
- •Тема 1.9 Элементарные типы данных.
- •Тема 1.10 Преобразование типов.
- •Арифметические операции
- •Операции сравнения
- •Тема 1.11 Кoнсольный ввод с помощью класса java.Util.Scanner
- •Тема 1.12 Классы-оболочки
- •Тема 1.13 Автоупакока и автораспаковка.
- •Тема 1.14 Операторы
- •1.14.1 Блок
- •1.14.2 Условный оператор if
- •1.14.4 Оператор цикла while
- •1.14.5 Оператор цикла do-while
- •1.14.6 Оператор цикла for
- •1.14.7 Оператор continue и метки
- •1.14.8 Оператор break
- •1.14.9 Оператор варианта switch
- •Тема 1.15 Статический импорт
- •Тема 1.16 Класс Math
- •Задания
- •Тема 1.17 Псевдослучайные числа
- •Тема 1.18 Генерация случайных чисел
- •Тема 1.19 Массивы в Java
- •1.19.1 Объявление и заполнение массива
- •1.19.2 Сортировка массива
- •Сортировка выбором
- •Сортировка методом пузырька
- •1.19.3 Многомерные массивы
- •Задания
- •1.19.4 Нерегулярные массивы
- •Глава 2 классы
- •Тема 2.1 Основы классов
- •Тема 2.2 Общая форма класса
- •Тема 2.3 Объявление объектов
- •Тема 2.4 Более подробное рассмотрение операции new
- •Тема 2.5 Присваивание переменных объектных ссылок
- •Тема 2.6 Знакомство с методами
- •Тема 2.7 Возвращение значения из метода
- •Тема 2.8 Добавление метода, принимающего параметры
- •Тема 2.9 Конструкторы
- •Тема 2.10 Сборка мусора
- •Тема 2.11 Перегрузка методов
- •Тема 2.12 Перегрузка конструкторов
- •Тема 2.13 Использование объектов в качестве параметров
- •Тема 2.14 Более пристальный взгляд на передачу аргументов
- •Тема 2.16 Рекурсия
- •Тема 2.17 Введение в управление доступом
- •Тема 2.18 Ключевое слово static
- •Тема 2.19 Ключевое слово final
- •Тема 2.20 Аргументы переменной длины
- •Тема 2.21 Строки и числа
- •Тема 2.22 Нумерованные типы
- •Глава 3 наследование и интерфейсы
- •Тема 3.1 Основы наследования
- •Тема 3.2 Наследование и доступ к членам класса
- •Тема 3.3 Конструкторы и наследование
- •Тема 3.4 Использование ключевого слова super для вызова конструктора суперкласса
- •Тема 3.5 Использование ключевого слова super для доступа к членам суперкласса
- •Тема 3.6 Многоуровневая иерархия
- •Тема 3.7 Когда вызываются конструкторы
- •Тема 3.8 Объекты подклассов и ссылки на суперклассы
- •Тема 3.9 Переопределение методов
- •Тема 3.10 Переопределение методов и поддержка полиморфизма
- •Тема 3.11 Использование абстрактных классов
- •Тема 3.12 Использование ключевого слова final
- •Тема 3.13 Предотвращение переопределения методов
- •Тема 3.14 Предотвращение наследования
- •Тема 3.15 Класс Object
- •Тема 3.16 Интерфейсы
- •3.16.1 Объявление интерфейса.
- •3.16.2 Реализация интерфейсов
- •3.16.3 Использование ссылок на интерфейсы
- •3.16.4 Переменные в составе интерфейсов
- •3.16.5 Наследование интерфейсов
- •Тема 3.17 Пакеты и ограничение доступа
- •Тема 3.18 Внутренние классы
- •3.18.1 Внутренние (inner) классы
- •3.18.2 Вложенные (nested) классы
- •3.18.3 Анонимные (anonymous) классы
- •Глава 4 Обработка исключительных ситуаций
- •Тема 4.1 Исключения в Java
- •Тема 4.2 Типы исключений
- •Тема 4.3 Неперехваченные исключения
- •Тема 4.4 Ключевые слова try и catch
- •Тема 4.6 Ключевое слово throw
- •Тема 4.7 Ключевое слово throws
- •Тема 4.8 Ключевое слово finally
- •Ошибка при выполнении метода1 java.Lang.ArithmeticException: Demo
- •Тема 4.9 Потомки Exception или написание своих классов ошибок
- •Глава 5 Универсальные типы. КоллекциИ
- •Тема 5.1 Общие сведения об универсальных типах
- •Тема 5.2 Универсальный класс с двумя параметрами типа
- •Тема 5.3 Ограниченные типы
- •Тема 5.4 Использование групповых параметров
- •Тема 5.5 Универсальные методы
- •Тема 5.6 Универсальные интерфейсы
- •Тема 5.7 Ошибки неоднозначности
- •Тема 5.8 Ограничения универсальных типов
- •Тема 5.9 Краткий обзор коллекций
- •5.9.1 Класс ArrayList
- •5.9.2 Класс LinkedList
- •5.9.3 Класс HashSet
- •5.9.4 Класс TreeSet
- •5.9.5 Доступ к коллекции через итератор
- •5.9.6 Алгоритмы коллекций
- •Глава 6 jdbc (Java DataBase Connectivity) Тема 6.1 Драйверы, соединения и запросы
- •Тема 6.2 Простое соединение и простой запрос
- •Тема 6.2 Класс ResultSet
- •Тема 6.3 Метаданные
- •Тема 6.4 Подготовленные запросы
- •Глава 7 Swing и пользовательский интерфейс
- •Тема 7.1 Общие сведения о swing
- •Тема 7.2 Архитектура mvc
- •Тема 7.3 Контейнер и компоненты
- •Тема 7.4 Простая программа, использующая средства Swing
- •Тема 7.5 Поддержка событий
- •Тема 7.6 Использование кнопок и обработка событий
- •Тема 7.7 Краткие сведения о диспетчерах компоновки
- •Тема 7.8 Пример использования jdbc и swing вместе
5.9.6 Алгоритмы коллекций
Структура коллекций содержит несколько алгоритмов, которые могут применяться к коллекциям. Эти алгоритмы определены как статические методы в классе collections и описаны в таблице 5.8.
Таблица 5.8 Алгоритмы класса Collections
Метод |
Описание |
static int binarySearch(List list, Object value, Comparator c) |
Отыскивает объект value из списка list, упорядоченного с помощью компаратора с. Возвращает позицию value в списке list, или -1, если значение не найдено |
static int binarySearch (List list, Object value) |
Отыскивает объект value в списке list. Список должен быть сортированным. Возвращает позицию value в Слиске list, или – 1, если значение не найдено |
static void copy(List listl, List Iist2) |
Копирует элементы list2 в list1 |
static Enumeration enumeration (Collection c) |
Возвращает перечисление коллекции с |
static void fill (List list, Object obj) |
Присваивает объект obj каждому элементу списка list |
static Object max(Collection c, Comparator comp) |
Возвращает максимальный элемент коллекции с, использующей компаратор соmр |
static Object max(Collection c) |
Возвращает максимальный элемент коллекции с, использующей естественное упорядочение. Коллекция может быть несортированной |
static Object min (Collection c, Comparator comp) |
Возвращает минимальный элемент коллекции с, использующей компаратор соmр. Коллекция может быть несортированной |
static Object min (Collection c) |
Возвращает минимальный элемент коллекции с, использующей естественное упорядочение |
static List nCopies(int num, Object obj) |
Возвращает num копий объекта obj в форме неизменяемого списка, num должен быть больше или равен нулю |
static void reverse (List list) |
Реверсирует последовательность списка list |
static Comparator reverseOrder() |
Возвращает обратный компаратор (компаратор, который реверсирует вывод результата сравнения двух элементов) |
static void shuffle(List list, Random r) |
Перетасовывает (т. е. рандомизирует) элементы в списке list, используя r как источник случайных чисел |
static void shuffle(List list) |
Перетасовывает (т. е. рандомизирует) элементы в списке list (с рандомизатором по умолчанию) |
static Set singleton(Object obj) |
Возвращает obj как неизменяемый набор. Это простой способ преобразования одиночного объекта в набор |
static void sort(List list, Comparator comp) |
Сортирует элементы списка list по правилам компаратора соmp |
static void sort(List list) |
Сортирует элементы списка list в естественном порядке |
static Collection synchronizedCollection (Collection c) |
Возвращает синхронизированную (поточно-безопасную) коллекцию, поддерживаемую коллекцией с |
static List synchronizadList (List list) |
Возвращает синхронизированный (поточно-безопасный) список, поддерживаемый списком list |
static Map synchrorizedMap(Map m) |
Возвращает синхронизированную (поточно-безопасную карту) отображений, поддерживаемую картой m |
static Set synchronizedSet(Set s) |
Возвращает синхронизированный (поточно-безопасный) набор, поддерживаемый набором s |
static SortedMap synchronizedSortedMap (SortedMap sm) |
Возвращает синхронизированную (поточно-безопасную) отсортированную карту, поддерживаемую отсортированной картой sm |
static SortedSet synchxonizedSortedSat(SortedSet ss) |
Возвращает синхронизированный (поточно-безопасный) отсортированный набор, поддерживаемый отсортированным набором ss |
static Collection unmodifiableCollection (Collection c) |
Возвращает неизменяемую коллекцию, поддерживаемую коллекцией с |
static List unmodifiableList (List list) |
Возвращает неизменяемый список, поддерживаемый списком list |
static Map unmodifiableMap (Map m) |
Возвращает неизменяемую карту отображений, поддерживаемую картой m |
static Set unmodifiableSet (Set a) |
Возвращает неизменяемый набор, поддерживаемый набором s |
static SortedMap unmodifiableSortedMap (SortedMap sm) |
Возвращает неизменяемую отсортированную карту отображений, поддерживаемую отсортированной картой sm |
static SortedSet unmodifiableSortedSet(SortedSet ss) |
Возвращает неизменяемый отсортированный набор, поддерживаемый отсортированным набором ss |
Некоторые из методов могут выбрасывать исключения ClassCastException, которые происходят при попытке сравнения несовместимых типов, или исключения UnsupportedOperationException, возникающие во время изменения неизменяемой коллекции.
Коллекции представляют собой обширную группу классов дающих много возможностей для хранения и обработки объектов. В рамках данного методического пособия была рассмотрена лишь малая часть этих классов. Рекомендуем продолжить изучение классов коллекций по документации.
Выводы к главе:
Универсальные типы – это совершенно новая синтаксическая конструкция, появление которой вызвало существенные изменения во многих классах и методах базового API.
Универсальные типы позволяют создавать классы, интерфейсы и методы, для которых типы обрабатываемых данных передаются в качестве параметра.
Классы, интерфейсы или методы, которые обрабатывают типы, передаваемые посредством параметров, называются универсальными.
При определении экземпляра универсального класса передаваемый тип, который заменяет параметр типа, должен быть именем класса. Для этой цели нельзя использовать простой тип, например int или char.
Групповой параметр можно ограничить при помощи ключевого слова extends.
Класс может содержать несколько параметров одновременно.
Не параметризированный класс может содержать один или несколько параметризированных методом. Конструктор может быть параметризирован.
В параметризированном классе не может быть статических полей и методов использующих параметр.
Универсальный класс не может расширять класс Throwable. Это означает, что создать универсальный класс исключения невозможно.
Коллекция – это группа объектов.
Интерфейс Collection – это основа, на которой сформирована структура коллекций. В нем объявляются основные методы, которые будут наследоваться всеми коллекциями.
Алгоритмы – важная часть механизма коллекций. Алгоритмы работают на коллекциях и определены как статические методы в классе Collections.
Задания к главе:
1). Напишите класс Student, предоставляющий информацию об имени студента методом getName() и о его курсе методом getCourse(). Напишите метод printStudents(LinkedList students, int course), который получает список студентов и номер курса и печатает в консоль имена тех студентов из списка, которые обучаются на данном курсе. Протестируйте ваш метод (для этого предварительно придется создать десяток объектов класса Student и поместить их в список). Напишите методы union(LinkedList set1, LinkedList set2) и intersect(LinkedList set1, LinkedList set2), реализующих операции объединения и пересечения двух множеств. Протестируйте работу этих методах на двух предварительно заполненных множествах. (Вам понадобится написать вспомогательный метод, выводящий все элементы множества на консоль.) Реализуйте интерфейс Comparable так, чтобы студенты сортировались по номеру курса. Проверить работу, используя класс TreeSet.
2). Не используя вспомогательных объектов, переставить отрицательные элементы данного списка в конец, а положительные - в начало этого списка.
3). В кругу стоят N человек, пронумерованных от 1 до N. При ведении счета по кругу вычеркивается каждый второй человек, пока не останется один. Составить две программы, моделирующие процесс. Одна из программ должна использовать класс ArrayList, а вторая - LinkedList.
4). Задан список целых чисел и число X. Не используя вспомогательных объектов и не изменяя размера списка, переставить элементы списка так, чтобы сначала шли числа, не превосходящие X, а затем числа, большие X.
5). Выполнить попарное суммирование произвольного конечного ряда чисел по следующим правилам: на первом этапе суммируются попарно рядом стоящие числа, на втором этапе суммируются результаты первого этапа и т.д. до тех пор, пока не останется одно число.
6). На базе коллекций реализовать структуру хранения чисел с поддержкой следующих операций:
• добавление/удаление числа;
• поиск числа, наиболее близкого к заданному (т.е. модуль разницы минимален).