diff --git a/core-java-modules/core-java-collections-list-5/pom.xml b/core-java-modules/core-java-collections-list-5/pom.xml
index 144fd12c45..bcdb6824ed 100644
--- a/core-java-modules/core-java-collections-list-5/pom.xml
+++ b/core-java-modules/core-java-collections-list-5/pom.xml
@@ -1,7 +1,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
core-java-collections-list-5
core-java-collections-list-5
@@ -42,11 +42,33 @@
1.18.26
provided
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+ test
+
+
+ com.google.code.gson
+ gson
+ ${gson.version}
+ test
+
+
+ org.json
+ json
+ ${org.json.version}
+ test
+
+
1.21
2.2
3.12.0
+ 2.10.1
+ 2.15.2
+ 20230618
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/iteratorandlistiterator/IteratorVsListIteratorUnitTest.java b/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/iteratorandlistiterator/IteratorVsListIteratorUnitTest.java
new file mode 100644
index 0000000000..8efe88c24a
--- /dev/null
+++ b/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/iteratorandlistiterator/IteratorVsListIteratorUnitTest.java
@@ -0,0 +1,108 @@
+package com.baeldung.java.iteratorandlistiterator;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+import org.junit.jupiter.api.Test;
+
+import com.google.common.collect.Lists;
+
+public class IteratorVsListIteratorUnitTest {
+
+ @Test
+ void whenUsingIterator_thenWeCanTraverseForwardsAndRemoveElements() {
+ List inputList = Lists.newArrayList("1", "2", "3", "4", "5");
+ Iterator it = inputList.iterator();
+ while (it.hasNext()) {
+ String e = it.next();
+ if ("3".equals(e) || "5".equals(e)) {
+ it.remove();
+ }
+ }
+
+ assertEquals(Lists.newArrayList("1", "2", "4"), inputList);
+
+ }
+
+ @Test
+ void whenUsingListIteratorAlternatingNextAndPrevious_thenAlwaysGetTheSameElement() {
+ List inputList = Lists.newArrayList("1", "2", "3", "4", "5");
+ ListIterator lit = inputList.listIterator(); // ^ 1 2 3 4 5
+ lit.next(); // 1 ^ 2 3 4 5
+ lit.next(); // 1 2 ^ 3 4 5
+
+ for (int i = 1; i <= 100; i++) {
+ assertEquals("2", lit.previous());
+ assertEquals("2", lit.next());
+ }
+
+ }
+
+ @Test
+ void whenUsingListIterator_thenRetrieveElementInForwardAndBackwardDirection() {
+ List inputList = Lists.newArrayList("1", "2", "3", "4", "5");
+ ListIterator lit = inputList.listIterator(); // ^ 1 2 3 4 5
+
+ assertFalse(lit.hasPrevious()); // lit is at the beginning of the list
+ assertEquals(-1, lit.previousIndex());
+
+ assertEquals("1", lit.next()); // after next(): 1 ^ 2 3 4 5
+ assertEquals("2", lit.next()); // after next(): 1 2 ^ 3 4 5
+ assertEquals("3", lit.next()); // after next(): 1 2 3 ^ 4 5
+
+ assertTrue(lit.hasPrevious());
+ assertEquals(2, lit.previousIndex());
+ assertEquals("3", lit.previous()); // after previous(): 1 2 ^ 3 4 5
+
+ assertTrue(lit.hasPrevious());
+ assertEquals(1, lit.previousIndex());
+ assertEquals("2", lit.previous()); // after previous(): 1 ^ 2 3 4 5
+
+ assertTrue(lit.hasPrevious());
+ assertEquals(0, lit.previousIndex());
+ assertEquals("1", lit.previous()); // after previous(): ^ 1 2 3 4 5
+ }
+
+ @Test
+ void whenUsingSetElement_thenGetExpectedResult() {
+ List inputList = Lists.newArrayList("1", "2", "3", "4", "5");
+ ListIterator lit = inputList.listIterator(1); // ^ 1 2 3 4 5
+ lit.next(); // 1 ^ 2 3 4 5
+
+ assertEquals("3", lit.next()); // 1 2 ^ 3 4 5
+ lit.set("X");
+ assertEquals(Lists.newArrayList("1", "2", "X", "4", "5"), inputList);
+
+ assertEquals("X", lit.previous()); // 1 2 ^ X 4 5
+
+ assertEquals("2", lit.previous()); // 1 ^ 2 X 4 5
+ lit.set("Y");
+ assertEquals(Lists.newArrayList("1", "Y", "X", "4", "5"), inputList);
+ }
+
+ @Test
+ void whenUsingAddElement_thenGetExpectedResult() {
+ List inputList = Lists.newArrayList("1", "2", "3", "4", "5");
+ ListIterator lit = inputList.listIterator(); // ^ 1 2 3 4 5
+ lit.next(); // 1 ^ 2 3 4 5
+ lit.next(); // 1 2 ^ 3 4 5
+ lit.next(); // 1 2 3 ^ 4 5
+
+ lit.add("X"); // 1 2 3 X ^ 4 5
+ assertEquals("4", lit.next()); // 1 2 3 X 4 ^ 5
+
+ lit.previous(); // 1 2 3 X ^ 4 5
+ lit.previous(); // 1 2 3 ^ X 4 5
+ lit.previous(); // 1 2 ^ 3 X 4 5
+ lit.add("Y"); // 1 2 Y ^ 3 X 4 5
+
+ assertEquals("Y", lit.previous());
+
+ assertEquals(Lists.newArrayList("1", "2", "Y", "3", "X", "4", "5"), inputList);
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/list/ListContainsElementFromOtherListTest.java b/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/list/ListContainsElementFromOtherListUnitTest.java
similarity index 97%
rename from core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/list/ListContainsElementFromOtherListTest.java
rename to core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/list/ListContainsElementFromOtherListUnitTest.java
index 4ce7c44282..8d981f2746 100644
--- a/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/list/ListContainsElementFromOtherListTest.java
+++ b/core-java-modules/core-java-collections-list-5/src/test/java/com/baeldung/java/list/ListContainsElementFromOtherListUnitTest.java
@@ -13,7 +13,7 @@ import org.junit.Test;
import com.baeldung.list.Country;
-public class ListContainsElementFromOtherListTest {
+public class ListContainsElementFromOtherListUnitTest {
final private List listOfLetters = Arrays.asList("a", "b", "c", "d");
final private List listOfLettersWithOverlap = Arrays.asList("d", "e", "f", "g");
@@ -65,4 +65,4 @@ public class ListContainsElementFromOtherListTest {
assertTrue(shouldBeTrue);
}
-}
+}
\ No newline at end of file