Титульный лист материалов по дисциплине
ДИСЦИПЛИНА Программирование на Java
полное название дисциплины без аббревиатуры
ИНСТИТУТ Информационных технологий
КАФЕДРА ИППО
полное название кафедры
ГРУППА/Ы
номер групп/ы, для которых предназначены материалы
ВИД УЧЕБНОГО лекция
МАТЕРИАЛА лекция; материал к практическим занятиям; контрольно-измерительные материалы к практическим занятиям; руководство к КР/КП, практикам
ПРЕПОДАВАТЕЛЬ Зорина Наталья Валентиновна
фамилия, имя, отчество
СЕМЕСТР
указать номер семестра обучения
Тема №8: Регулярные выражения. Java Core. Дженерики (продолжение) и использование контейнерных классов Java Framework Collection.
Содержание:
1.Регулярные выражения
2.Обзор коллекций
3.Дженерики
4.Контейнеры (коллекции)
5.Vector, ArrayList, LinkedList
6.Итераторы
Java Core
Регулярные выражения
Регулярные выражения — это инструмент который задает шаблон для строк. Если у программиста стоит задача обработать большой набор строк и
отыскать в нем нужную или проверить соответствует ли входящая строка определенному правилу оптимальное решение - регулярные выражения.
Рисунок 8.1 – Пример использования регулярных выражений
import java.util.regex.Pattern; public class RegexExample {
public static void isPasswordOK(String password) { if(Pattern.matches("admin", password)) {
System.out.println("Hi admin");
}
}
public static void main(String[] args) { isPasswordOK("admin"); }
}
Пакет java.util.regex включает три важных класса: Pattern,
Matcher, PatternSyntaxException и интерфейс MatchResult .
Синтаксис регулярных выражений
Интерфейс MatchResult — результат операции сравнения. Класс
Matcher — механизм, который выполняет операции сопоставления последовательности символов путем интерпретации шаблона
Класс Pattern — скомпилированное представление регулярного выражения. У класса Pattern есть метод compile(), который возвращает
Pattern, соответствующий регулярному выражению. Метод matches —
сравнивает выражение с набором символов и возвращает true, false в
зависимости от того совпали строки или нет. Например, проверка пароля, которую мы делали через метод equals может быть реализована более элегантно с помощью метода matches.
Класс Pattern
Объект Pattern представляет собой скомпилированное представление регулярного выражения. Класс Pattern не предоставляет общедоступных конструкторов. Чтобы создать шаблон, вы должны сначала вызвать один из его открытых статических методов compile(), который затем вернет объект Pattern. Эти методы принимают регулярное выражение в качестве первого аргумента.
Класс Matcher
Объект Matcher – это механизм, который интерпретирует шаблон и выполняет операции сопоставления с входной строкой. Как и класс Pattern,
Matcher не определяет общедоступных конструкторов. Вы получаете объект
Matcher, вызывая метод matcher() для объекта Pattern.
Класс PatternSyntaxException
Объект PatternSyntaxException является непроверяемым исключением, которое указывает на синтаксическую ошибку в образце регулярного выражения.
Правила написания:
-. — точка это соответствие любому символу;
-^строка — находит регулярное выражение, которое должно совпадать в начале строки;
-строка$ — выражение, которое должно совпадать в конце строки;
-[абв] — только буквы а или б или в;
-[абв][яю] — только буквы а или б или в за которыми следуют я
или ю;
- [^abc] — когда символ каретки появляется в качестве первого символа в квадратных скобках, он отрицает шаблон. Этот шаблон соответствует любому символу, кроме a или b или c.
Метасимволы:
-\d — любая цифра — равнозначно [0-9];
-\D — только не цифра — равнозначно [^0-9];
-\s — символ пробела;
-\w — символ слова — равнозначно [a-zA-Z_0-9]. Квантификаторы
-* — символ звездочки означает от ноля до бесконечности;
-+ — символ может встречаться от одного или несколько раз, сокращенно {1,};
-? — встречается ни разу или один раз, знак вопроса это сокращение для {0,1};
-{X} — символ встречается X раз;
-{X,Y} — символ встречается от X до Y раз.
Дженерики
Пример 1 – Определение обобщенных типов:
public interface List<E> { void add(E x); Iterator<E> iterator();
}
public interface Iterator<E> { E next();
boolean hasNext();
}
public interface Map<K,V> { V put(K key, V value);
}
Пример 2 –определение (своего собственного) типа дженерика: