What's the Difference Between Iterator and Listiterator? (#14547)
This commit is contained in:
parent
e10a895ba0
commit
4945be2fd6
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
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">
|
||||
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">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>core-java-collections-list-5</artifactId>
|
||||
<name>core-java-collections-list-5</name>
|
||||
|
@ -42,11 +42,33 @@
|
|||
<version>1.18.26</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>${gson.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>${org.json.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<properties>
|
||||
<jmh.version>1.21</jmh.version>
|
||||
<commons-lang.version>2.2</commons-lang.version>
|
||||
<commons-lang3.version>3.12.0</commons-lang3.version>
|
||||
<gson.version>2.10.1</gson.version>
|
||||
<jackson.version>2.15.2</jackson.version>
|
||||
<org.json.version>20230618</org.json.version>
|
||||
</properties>
|
||||
</project>
|
|
@ -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<String> inputList = Lists.newArrayList("1", "2", "3", "4", "5");
|
||||
Iterator<String> 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<String> inputList = Lists.newArrayList("1", "2", "3", "4", "5");
|
||||
ListIterator<String> 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<String> inputList = Lists.newArrayList("1", "2", "3", "4", "5");
|
||||
ListIterator<String> 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<String> inputList = Lists.newArrayList("1", "2", "3", "4", "5");
|
||||
ListIterator<String> 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<String> inputList = Lists.newArrayList("1", "2", "3", "4", "5");
|
||||
ListIterator<String> 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);
|
||||
}
|
||||
}
|
|
@ -13,7 +13,7 @@ import org.junit.Test;
|
|||
|
||||
import com.baeldung.list.Country;
|
||||
|
||||
public class ListContainsElementFromOtherListTest {
|
||||
public class ListContainsElementFromOtherListUnitTest {
|
||||
|
||||
final private List<String> listOfLetters = Arrays.asList("a", "b", "c", "d");
|
||||
final private List<String> listOfLettersWithOverlap = Arrays.asList("d", "e", "f", "g");
|
||||
|
@ -65,4 +65,4 @@ public class ListContainsElementFromOtherListTest {
|
|||
assertTrue(shouldBeTrue);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue