1. Введение
Cactoos — это библиотека объектно-ориентированных примитивных типов Java .
В этом уроке мы рассмотрим некоторые классы, доступные как часть этой библиотеки.
2. Кактусы
Репертуар библиотеки Cactoos довольно богат, начиная от манипуляций со строками и заканчивая структурами данных. Примитивные типы и соответствующие им методы, предлагаемые этой библиотекой, аналогичны тем, которые предоставляются другими библиотеками, такими как Guava и Apache Commons , но больше ориентированы на принципы объектно-ориентированного проектирования .
2.1. Сравнение с Apache Commons
Библиотека Cactoos оснащена классами, которые обеспечивают ту же функциональность, что и статические методы, являющиеся частью библиотеки Apache Commons.
Давайте взглянем на некоторые из этих статических методов, которые являются частью пакета StringUtils
, и их эквивалентные классы в Cactoos:
| **Статический метод StringUtils ** | **Эквивалентный класс кактусов** |
| пустой() | Пусто |
| нижний регистр() | пониженный |
| верхний регистр() | Верхний |
| повернуть() | Повернуто |
| swapCase() | SwappedCase |
| раздевание () | TrimmedLeft |
| полосаКонец() | 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 с помощью класса
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. Итерация коллекции
Мы можем перебрать список строк, используя служебный класс And
:
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 .