diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml
index c8980fd309..6942aa736d 100644
--- a/libraries-3/pom.xml
+++ b/libraries-3/pom.xml
@@ -23,10 +23,16 @@
lombok
${lombok.version}
+
+ org.cactoos
+ cactoos
+ ${cactoos.version}
+
1.78
1.18.6
+ 0.43
-
+
\ No newline at end of file
diff --git a/libraries-3/src/main/java/com/baeldung/cactoos/CactoosCollectionUtils.java b/libraries-3/src/main/java/com/baeldung/cactoos/CactoosCollectionUtils.java
new file mode 100644
index 0000000000..717c63ae63
--- /dev/null
+++ b/libraries-3/src/main/java/com/baeldung/cactoos/CactoosCollectionUtils.java
@@ -0,0 +1,28 @@
+package com.baeldung.cactoos;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.cactoos.collection.Filtered;
+import org.cactoos.iterable.IterableOf;
+import org.cactoos.list.ListOf;
+import org.cactoos.scalar.And;
+import org.cactoos.text.FormattedText;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CactoosCollectionUtils {
+
+ final Logger LOGGER = LoggerFactory.getLogger(CactoosCollectionUtils.class);
+
+ public void iterateCollection(List strings) throws Exception {
+ new And((String input) -> LOGGER.info(new FormattedText("%s\n", input).asString()), strings).value();
+ }
+
+ public Collection getFilteredList(List strings) {
+ Collection filteredStrings = new ListOf<>(
+ new Filtered<>(string -> string.length() == 5, new IterableOf<>(strings)));
+ return filteredStrings;
+ }
+
+}
diff --git a/libraries-3/src/main/java/com/baeldung/cactoos/CactoosStringUtils.java b/libraries-3/src/main/java/com/baeldung/cactoos/CactoosStringUtils.java
new file mode 100644
index 0000000000..3e2903ebf4
--- /dev/null
+++ b/libraries-3/src/main/java/com/baeldung/cactoos/CactoosStringUtils.java
@@ -0,0 +1,37 @@
+package com.baeldung.cactoos;
+
+import java.io.IOException;
+
+import org.cactoos.text.FormattedText;
+import org.cactoos.text.IsBlank;
+import org.cactoos.text.Lowered;
+import org.cactoos.text.TextOf;
+import org.cactoos.text.Upper;
+
+public class CactoosStringUtils {
+
+ public String createString() throws IOException {
+ String testString = new TextOf("Test String").asString();
+ return testString;
+ }
+
+ public String createdFormattedString(String stringToFormat) throws IOException {
+ String formattedString = new FormattedText("Hello %s", stringToFormat).asString();
+ return formattedString;
+ }
+
+ public String toLowerCase(String testString) throws IOException {
+ String lowerCaseString = new Lowered(new TextOf(testString)).asString();
+ return lowerCaseString;
+ }
+
+ public String toUpperCase(String testString) throws Exception {
+ String upperCaseString = new Upper(new TextOf(testString)).asString();
+ return upperCaseString;
+ }
+
+ public boolean isBlank(String testString) throws Exception {
+ return new IsBlank(new TextOf(testString)) != null;
+ }
+
+}
diff --git a/libraries-3/src/test/java/com/baeldung/cactoos/CactoosCollectionUtilsUnitTest.java b/libraries-3/src/test/java/com/baeldung/cactoos/CactoosCollectionUtilsUnitTest.java
new file mode 100644
index 0000000000..c6bcbd7df7
--- /dev/null
+++ b/libraries-3/src/test/java/com/baeldung/cactoos/CactoosCollectionUtilsUnitTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.cactoos;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.junit.Test;
+
+public class CactoosCollectionUtilsUnitTest {
+
+ @Test
+ public void whenFilteredClassIsCalledWithSpecificArgs_thenCorrespondingFilteredCollectionShouldBeReturned() throws IOException {
+
+ CactoosCollectionUtils obj = new CactoosCollectionUtils();
+
+ // when
+ List strings = new ArrayList() {
+ {
+ add("Hello");
+ add("John");
+ add("Smith");
+ add("Eric");
+ add("Dizzy");
+ }
+ };
+ int size = obj.getFilteredList(strings).size();
+
+ // then
+ assertEquals(3, size);
+
+ }
+
+}
diff --git a/libraries-3/src/test/java/com/baeldung/cactoos/CactoosStringUtilsUnitTest.java b/libraries-3/src/test/java/com/baeldung/cactoos/CactoosStringUtilsUnitTest.java
new file mode 100644
index 0000000000..67dd6d91e4
--- /dev/null
+++ b/libraries-3/src/test/java/com/baeldung/cactoos/CactoosStringUtilsUnitTest.java
@@ -0,0 +1,54 @@
+package com.baeldung.cactoos;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class CactoosStringUtilsUnitTest {
+
+ @Test
+ public void whenFormattedTextIsPassedWithArgs_thenFormattedStringIsReturned() throws IOException {
+
+ CactoosStringUtils obj = new CactoosStringUtils();
+
+ // when
+ String formattedString = obj.createdFormattedString("John");
+
+ // then
+ assertEquals("Hello John", formattedString);
+
+ }
+
+ @Test
+ public void whenStringIsPassesdToLoweredOrUpperClass_thenCorrespondingStringIsReturned() throws Exception {
+
+ CactoosStringUtils obj = new CactoosStringUtils();
+
+ // when
+ String lowerCaseString = obj.toLowerCase("TeSt StrIng");
+ String upperCaseString = obj.toUpperCase("TeSt StrIng");
+
+ // then
+ assertEquals("test string", lowerCaseString);
+ assertEquals("TEST STRING", upperCaseString);
+
+ }
+
+ @Test
+ public void whenEmptyStringIsPassesd_thenIsBlankReturnsTrue() throws Exception {
+
+ CactoosStringUtils obj = new CactoosStringUtils();
+
+ // when
+ boolean isBlankEmptyString = obj.isBlank("");
+ boolean isBlankNull = obj.isBlank(null);
+
+ // then
+ assertEquals(true, isBlankEmptyString);
+ assertEquals(true, isBlankNull);
+
+ }
+
+}