diff --git a/core-java-modules/core-java-collections-4/README.md b/core-java-modules/core-java-collections-4/README.md
new file mode 100644
index 0000000000..1c680b86ba
--- /dev/null
+++ b/core-java-modules/core-java-collections-4/README.md
@@ -0,0 +1,7 @@
+=========
+
+## Core Java Collections Cookbooks and Examples
+
+### Relevant Articles:
+
+- TODO: add article links here
diff --git a/core-java-modules/core-java-collections-4/pom.xml b/core-java-modules/core-java-collections-4/pom.xml
new file mode 100644
index 0000000000..0e3cabf40e
--- /dev/null
+++ b/core-java-modules/core-java-collections-4/pom.xml
@@ -0,0 +1,31 @@
+
+
+ 4.0.0
+ core-java-collections-4
+ 0.1.0-SNAPSHOT
+ core-java-collections-4
+ jar
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+ ../pom.xml
+
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ 3.18.0
+
+
+
diff --git a/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/ArrayListUnitTest.java b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/ArrayListUnitTest.java
new file mode 100644
index 0000000000..bc6a07d274
--- /dev/null
+++ b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/ArrayListUnitTest.java
@@ -0,0 +1,30 @@
+package com.baeldung.collections.comparation;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ArrayListUnitTest {
+
+ @Test
+ void givenArrayList_whenItemAddedToSpecificIndex_thenItCanBeRetrieved() {
+ List list = new ArrayList<>();
+ list.add("Daniel");
+ list.add(0, "Marko");
+ assertThat(list).hasSize(2);
+ assertThat(list.get(0)).isEqualTo("Marko");
+ }
+
+ @Test
+ void givenArrayList_whenItemRemovedViaIndex_thenListSizeIsReduced() {
+ List list = new ArrayList<>(Arrays.asList("Daniel", "Marko"));
+ list.remove(1);
+ assertThat(list).hasSize(1);
+ assertThat(list).doesNotContain("Marko");
+ }
+
+}
diff --git a/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/HashMapUnitTest.java b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/HashMapUnitTest.java
new file mode 100644
index 0000000000..3b595472e0
--- /dev/null
+++ b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/HashMapUnitTest.java
@@ -0,0 +1,31 @@
+package com.baeldung.collections.comparation;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class HashMapUnitTest {
+
+ @Test
+ void givenHashMap_whenItemAddedByKey_thenItCanBeRetrieved() {
+ Map map = new HashMap<>();
+ map.put("123456", "Daniel");
+ map.put("654321", "Marko");
+ assertThat(map.get("654321")).isEqualTo("Marko");
+ }
+
+ @Test
+ void givenHashMap_whenItemRemovedByKey_thenMapSizeIsReduced() {
+ Map map = new HashMap<>();
+ map.put("123456", "Daniel");
+ map.put("654321", "Marko");
+ map.remove("654321");
+ assertThat(map).hasSize(1);
+ }
+
+}
diff --git a/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/LinkedListUnitTest.java b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/LinkedListUnitTest.java
new file mode 100644
index 0000000000..aa6b7fa923
--- /dev/null
+++ b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/LinkedListUnitTest.java
@@ -0,0 +1,41 @@
+package com.baeldung.collections.comparation;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class LinkedListUnitTest {
+
+ @Test
+ void givenLinkedList_whenItemIsAppended_thenItCanBeRetrieved() {
+ LinkedList list = new LinkedList<>();
+ list.addLast("Daniel");
+ list.addFirst("Marko");
+ assertThat(list).hasSize(2);
+ assertThat(list.getLast()).isEqualTo("Daniel");
+ }
+
+ @Test
+ void givenLinkedList_whenItemIsRemoved_thenListSizeIsReduced() {
+ LinkedList list = new LinkedList<>(Arrays.asList("Daniel", "Marko", "David"));
+ list.removeFirst();
+ list.removeLast();
+ assertThat(list).hasSize(1);
+ assertThat(list).containsExactly("Marko");
+ }
+
+ @Test
+ void givenLinkedList_whenItemInserted_thenItCanBeRetrievedAndDeleted() {
+ LinkedList list = new LinkedList<>();
+ list.push("Daniel");
+ list.push("Marko");
+ assertThat(list.poll()).isEqualTo("Marko");
+ assertThat(list).hasSize(1);
+ }
+
+}
diff --git a/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/ListVsMapUnitTest.java b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/ListVsMapUnitTest.java
new file mode 100644
index 0000000000..dd6bf760fd
--- /dev/null
+++ b/core-java-modules/core-java-collections-4/src/test/java/com/baeldung/collections/comparation/ListVsMapUnitTest.java
@@ -0,0 +1,32 @@
+package com.baeldung.collections.comparation;
+
+import static org.assertj.core.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+
+class ListVsMapUnitTest {
+
+ @Test
+ void givenList_whenIteratingTroughValues_thenEachValueIsPresent() {
+ List list = new ArrayList<>();
+ list.add("Daniel");
+ list.add("Marko");
+ for (String name : list) {
+ assertThat(name).isIn(list);
+ }
+ assertThat(list).containsExactly("Daniel", "Marko");
+ }
+
+ @Test
+ void givenMap_whenIteratingTroughValues_thenEachValueIsPresent() {
+ Map map = new HashMap<>();
+ map.put(1, "Daniel");
+ map.put(2, "Marko");
+ for (String name : map.values()) {
+ assertThat(name).isIn(map.values());
+ }
+ assertThat(map.values()).containsExactlyInAnyOrder("Daniel", "Marko");
+ }
+
+}
diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml
index 2f3965b237..0a9e818156 100644
--- a/core-java-modules/pom.xml
+++ b/core-java-modules/pom.xml
@@ -34,6 +34,7 @@
core-java-collections
core-java-collections-2
core-java-collections-3
+ core-java-collections-4
core-java-collections-array-list
core-java-collections-list
core-java-collections-list-2