diff --git a/core-java-modules/core-java-streams-6/REAME.md b/core-java-modules/core-java-streams-6/REAME.md
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/core-java-modules/core-java-streams-6/REAME.md
@@ -0,0 +1 @@
+
diff --git a/core-java-modules/core-java-streams-6/pom.xml b/core-java-modules/core-java-streams-6/pom.xml
new file mode 100644
index 0000000000..c8cff002e4
--- /dev/null
+++ b/core-java-modules/core-java-streams-6/pom.xml
@@ -0,0 +1,87 @@
+
+
+ 4.0.0
+ core-java-streams-6
+ core-java-streams-6
+ jar
+
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+
+
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.junit
+ junit-bom
+ ${junit-jupiter.version}
+ pom
+ import
+
+
+ org.assertj
+ assertj-core
+ ${assertj-core.version}
+ test
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+ test
+
+
+ io.vavr
+ vavr
+ ${vavr.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons-collections4.version}
+
+
+
+
+ core-java-streams-6
+
+
+ ../core-java-streams-6/src/main
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+ -parameters
+
+
+
+
+
+
+ 12
+ 12
+ 0.10.2
+ 3.23.1
+ 3.12.0
+
+
+
diff --git a/core-java-modules/core-java-streams-6/src/main/java/com/baeldung/streams/emptylists/StreamFromEmptyList.java b/core-java-modules/core-java-streams-6/src/main/java/com/baeldung/streams/emptylists/StreamFromEmptyList.java
new file mode 100644
index 0000000000..f45c1668b7
--- /dev/null
+++ b/core-java-modules/core-java-streams-6/src/main/java/com/baeldung/streams/emptylists/StreamFromEmptyList.java
@@ -0,0 +1,56 @@
+package com.baeldung.streams.emptylists;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class StreamFromEmptyList {
+
+ public static void main(String[] args) {
+ createStreamFromEmptyList();
+
+ List nameList = getList();
+ printNameLengths(nameList); // passing null
+ printNameLengths((nameList == null) ? List.of() : nameList); // passing empty list
+
+ collectStreamOfEmptyListToAnotherList();
+ }
+
+ private static void collectStreamOfEmptyListToAnotherList() {
+ List emptyList = new ArrayList<>();
+ List collectedList = emptyList.stream().collect(Collectors.toList());
+
+ System.out.println(collectedList.size() == 0);
+
+ collectedList = emptyList.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
+ System.out.println(collectedList.size() == 0);
+ }
+
+ private static void createStreamFromEmptyList() {
+ List emptyList = new ArrayList<>();
+ Stream emptyStream = emptyList.stream();
+ System.out.println(emptyStream.findAny().isEmpty());
+ }
+
+ private static void printNameLengths(List nameList) {
+ // Without Stream - Traditional approach with null check
+ if (nameList != null) {
+ for (String name : nameList) {
+ System.out.println("Length of " + name + ": " + name.length());
+ }
+ } else {
+ System.out.println("List is null. Unable to process.");
+ }
+
+ // With Stream - More concise approach
+ Optional.ofNullable(nameList).ifPresent(list -> list.stream()
+ .map(name -> "Length of " + name + ": " + name.length()).forEach(System.out::println));
+ }
+
+ private static List getList() {
+ // This method may return null for demonstration purposes
+ return null;
+ }
+}
diff --git a/core-java-modules/core-java-streams-6/src/test/java/com/baeldung/streams/emptylists/StreamFromEmptyListUnitTest.java b/core-java-modules/core-java-streams-6/src/test/java/com/baeldung/streams/emptylists/StreamFromEmptyListUnitTest.java
new file mode 100644
index 0000000000..8b0c63b77a
--- /dev/null
+++ b/core-java-modules/core-java-streams-6/src/test/java/com/baeldung/streams/emptylists/StreamFromEmptyListUnitTest.java
@@ -0,0 +1,27 @@
+package com.baeldung.streams.emptylists;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.junit.Test;
+
+public class StreamFromEmptyListUnitTest {
+
+ @Test
+ public void givenEmptyList_whenConvertedToStream_thenResultantStreamIsEmpty() {
+ List emptyList = new ArrayList<>();
+ Stream emptyStream = emptyList.stream();
+ assertTrue(emptyStream.findAny().isEmpty());
+ }
+
+ @Test
+ public void givenEmptyList_whenCollectStreamOfEmptyListToAnotherList_thenResultantListIsEmpty() {
+ List emptyList = new ArrayList<>();
+ List collectedList = emptyList.stream().collect(Collectors.toList());
+ assertTrue(collectedList.isEmpty());
+ }
+}
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 50a7fed934..f4722855bc 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -63,6 +63,7 @@
core-java-perf-2
core-java-streams-4
core-java-streams-5
+ core-java-streams-6
core-java-streams-collect
core-java-streams-maps
core-java-string-operations-3