diff --git a/core-java-modules/core-java-collections-array-list/pom.xml b/core-java-modules/core-java-collections-array-list/pom.xml
index 6b040739e8..e3a115854c 100644
--- a/core-java-modules/core-java-collections-array-list/pom.xml
+++ b/core-java-modules/core-java-collections-array-list/pom.xml
@@ -5,6 +5,33 @@
4.0.0
core-java-collections-array-list
0.1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ ${maven-compiler-plugin.target}
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${surefire.plugin.version}
+
+
+ --add-opens java.base/java.util=ALL-UNNAMED
+
+
+
+
+
+
+ 16
+ 16
+ 3.0.0-M3
+
core-java-collections-array-list
jar
@@ -20,6 +47,12 @@
commons-collections4
${commons-collections4.version}
+
+ com.google.guava
+ guava
+ 31.1-jre
+ test
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/listofobjectstolistofstring/Node.java b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/listofobjectstolistofstring/Node.java
new file mode 100644
index 0000000000..3e2c5693de
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/listofobjectstolistofstring/Node.java
@@ -0,0 +1,17 @@
+package com.baeldung.listofobjectstolistofstring;
+
+public class Node {
+
+ private final int x;
+ private final int y;
+
+ public Node(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ @Override
+ public String toString() {
+ return "Node (" + "x=" + x + ", y=" + y + ')';
+ }
+}
diff --git a/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/listofobjectstolistofstring/User.java b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/listofobjectstolistofstring/User.java
new file mode 100644
index 0000000000..eb9298bce0
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list/src/main/java/com/baeldung/listofobjectstolistofstring/User.java
@@ -0,0 +1,14 @@
+package com.baeldung.listofobjectstolistofstring;
+
+public class User {
+ private final String fullName;
+
+ public User(String fullName) {
+ this.fullName = fullName;
+ }
+
+ @Override
+ public String toString() {
+ return "User (" + "full name='" + fullName + ')';
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-array-list/src/test/java/com/baeldung/listofobjectstolistofstring/ConvertObjectListToStringListUnitTest.java b/core-java-modules/core-java-collections-array-list/src/test/java/com/baeldung/listofobjectstolistofstring/ConvertObjectListToStringListUnitTest.java
new file mode 100644
index 0000000000..1d393a2945
--- /dev/null
+++ b/core-java-modules/core-java-collections-array-list/src/test/java/com/baeldung/listofobjectstolistofstring/ConvertObjectListToStringListUnitTest.java
@@ -0,0 +1,92 @@
+package com.baeldung.listofobjectstolistofstring;
+
+import com.google.common.collect.Lists;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+public class ConvertObjectListToStringListUnitTest {
+
+ @Test
+ public void givenObjectList_whenForEachUsedToConvert_thenReturnSuccess() {
+ List outputList = new ArrayList<>(objectListWithNull().size());
+ for (Object obj : objectListWithNull()) {
+ outputList.add(Objects.toString(obj, null));
+ }
+ Assert.assertEquals(expectedStringListWithNull(), outputList);
+ }
+
+ @Test
+ public void givenObjectList_whenUsingStreamsToConvert_thenReturnSuccess() {
+ List outputList;
+ outputList = objectListWithNull().stream()
+ .map((obj) -> Objects.toString(obj, null))
+ .collect(Collectors.toList());
+ Assert.assertEquals(expectedStringListWithNull(), outputList);
+
+ }
+
+ @Test
+ public void givenObjectList_whenUsingStreamsUnmodifiableListToConvert_thenReturnSuccess() {
+ List outputList;
+ outputList = objectListWithNull().stream()
+ .filter(Objects::nonNull)
+ .map((obj) -> Objects.toString(obj, null))
+ .collect(Collectors.toUnmodifiableList());
+ Assert.assertEquals(expectedStringListWithoutNull(), outputList);
+
+ }
+
+ @Test
+ public void givenObjectList_whenUsingGuavaTransform_thenReturnSuccess() {
+ List outputList;
+ outputList = Lists.transform(objectListWithNull(), obj -> Objects.toString(obj, null));
+ Assert.assertEquals(expectedStringListWithNull(), outputList);
+ }
+
+ @Test
+ public void givenObjectListWithNoNull_whenUsingToList_thenReturnSuccess() {
+ List outputList;
+ outputList = objectListWithoutNull().stream()
+ .map((obj) -> Objects.toString(obj, null))
+ .toList();
+ Assert.assertEquals(expectedStringListWithoutNull(), outputList);
+ }
+
+ private List expectedStringListWithNull() {
+ List listOfStrings = new ArrayList<>();
+ listOfStrings.add("1");
+ listOfStrings.add("true");
+ listOfStrings.add("hello");
+ listOfStrings.add(Double.toString(273773.98));
+ listOfStrings.add(null);
+ listOfStrings.add(new Node(2, 4).toString());
+ listOfStrings.add(new User("John Doe").toString());
+ return listOfStrings;
+ }
+
+ private List