Перейти к основному содержимому

Путеводитель по библиотеке кактусов

· 4 мин. чтения

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 .