Реализуйте пример хранения и поиска большого количества строк двумя способами:
- максимальная скорость поиска и извлечения искомой строки
- максимальная скорость сохранения данных в коллекции
Обоснуйте свой выбор.
Реализуйте обобщенную коллекцию с функциональностью сравнения ее элементов на равенство с переданными объектом. Объект может являться любым типом данных. Обоснуйте свой выбор.
Реализуйте свою коллекцию с итератором. Коллекция работает только с целыми числами. При итерации проход по элементам должен заканчиваться, если встречается отрицательное число.
Создайте класс FileSystemVisitor, который позволяет обходить дерево папок в файловой системе, начиная с указанной точки. Указанный класс должен:
• Возвращать все найденные файлы и папки в виде линейной последовательности, для чего реализовать свой итератор (по возможности используя оператор yield)
• Давать возможность задать алгоритм фильтрации найденных файлов и папок в момент создания экземпляра FileSystemVisitor (через специальный перегруженный конструктор). Алгоритм должен задаваться в виде делегата/лямбды
• Генерировать уведомления (через механизм событий) о этапах своей работы. В частности, должны быть реализованы следующие события
o Start и Finish (для начала и конца поиска) o FileFinded/DirectoryFinded для всех найденных файлов и папок до фильтрации, и FilteredFileFinded/filteredDirectoryFinded для файлов и папок прошедших фильтрацию. Данные события должны позволять (через установку специальных флагов в переданных параметрах):
прервать поиск
исключить файлы/папки из конечного списка
Напишите библиотеку тестов, демонстрирующих различные режимы работы FileSystemVisitor. Необходимость использования моков (mock) согласуйте с ментором.