«1. Введение
Cactoos — это библиотека объектно-ориентированных примитивных типов Java.
В этом уроке мы рассмотрим некоторые классы, доступные как часть этой библиотеки.
2. Cactoos
Репертуар библиотеки Cactoos довольно богат, начиная от манипуляций со строками и заканчивая структурами данных. Примитивные типы и соответствующие им методы, предлагаемые этой библиотекой, аналогичны тем, которые предоставляются другими библиотеками, такими как Guava и Apache Commons, но больше ориентированы на принципы объектно-ориентированного проектирования.
2.1. Сравнение с Apache Commons
Библиотека Cactoos оснащена классами, которые обеспечивают ту же функциональность, что и статические методы, являющиеся частью библиотеки Apache Commons.
Давайте рассмотрим некоторые из этих статических методов, которые являются частью пакета StringUtils, и их эквивалентные классы в Cactoos:
Static method of StringUtils | Equivalent Cactoos class |
---|---|
isBlank() | IsBlank |
lowerCase() | Lowered |
upperCase() | Upper |
rotate() | Rotated |
swapCase() | SwappedCase |
stripStart() | TrimmedLeft |
stripEnd() | TrimmedRight |
Дополнительную информацию об этом можно найти в официальной документации. Мы рассмотрим реализацию некоторых из них в следующем разделе.
3. Зависимость Maven
Давайте начнем с добавления необходимой зависимости Maven. Последнюю версию этой библиотеки можно найти на Maven Central:
<dependency>
<groupId>org.cactoos</groupId>
<artifactId>cactoos</artifactId>
<version>0.43</version>
</dependency>
4. Строки
В Cactoos есть широкий набор классов для управления объектом String.
4.1. Создание объекта String
Давайте посмотрим, как можно создать объект String с помощью класса TextOf:
String testString = new TextOf("Test String").asString();
4.2. Форматированная строка
В случае, если необходимо создать форматированную строку, мы можем использовать класс FormattedText:
String formattedString = new FormattedText("Hello %s", stringToFormat).asString();
Давайте проверим, что этот метод действительно возвращает форматированную строку:
StringMethods obj = new StringMethods();
String formattedString = obj.createdFormattedString("John");
assertEquals("Hello John", formattedString);
4.3. Строки нижнего/верхнего регистра
Класс Lowered преобразует строку в нижний регистр с помощью своего объекта TextOf:
String lowerCaseString = new Lowered(new TextOf(testString)).asString();
Точно так же заданная строка может быть преобразована в верхний регистр с помощью класса Upper:
String upperCaseString = new Upper(new TextOf(testString)).asString();
~ ~~ Давайте проверим выходные данные этих методов с помощью тестовой строки:
StringMethods obj = new StringMethods();
String lowerCaseString = obj.toLowerCase("TeSt StrIng");
String upperCaseString = obj.toUpperCase("TeSt StrIng");
assertEquals("test string", lowerCaseString);
assertEquals("TEST STRING", upperCaseString);
4.4. Проверка на пустую строку
Как обсуждалось ранее, библиотека Cactoos предоставляет класс IsBlank для проверки нулевой или пустой строки:
new IsBlank(new TextOf(testString)) != null;
5. Коллекции
Эта библиотека также предоставляет несколько классов для работы с коллекциями. Давайте взглянем на некоторые из них.
5.1. Перебор коллекции
Мы можем перебрать список строк, используя служебный класс И:
new And((String input) -> LOGGER.info(new FormattedText("%s\n", input).asString()), strings).value();
Вышеупомянутый метод представляет собой функциональный способ перебора списка строк, который записывает выходные данные в регистратор.
5.2. Фильтрация коллекции
Класс Filtered можно использовать для фильтрации коллекции на основе определенных критериев:
Collection<String> filteredStrings
= new ListOf<>(new Filtered<>(string -> string.length() == 5, new IterableOf<>(strings)));
Давайте протестируем этот метод, передав несколько аргументов, только 3 из которых удовлетворяют критериям:
CollectionUtils obj = new CollectionUtils();
List<String> strings = new ArrayList<String>() {
add("Hello");
add("John");
add("Smith");
add("Eric");
add("Dizzy");
};
int size = obj.getFilteredList(strings).size();
assertEquals(3, size);
~ ~~ Некоторые другие классы для коллекций, предоставляемые этой библиотекой, можно найти в официальной документации.
6. Заключение
В этом уроке мы рассмотрели библиотеку Cactoos и некоторые классы, которые она предоставляет для манипулирования строками и структурами данных.
В дополнение к этому библиотека также предоставляет другие служебные классы для операций ввода-вывода, а также дату и время.
Как обычно, образцы кода, используемые в этом руководстве, доступны на GitHub.