diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java b/core-java/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java index d16a1fcdf4..f7a7bd5fe0 100644 --- a/core-java/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java +++ b/core-java/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java @@ -3,9 +3,12 @@ package com.baeldung.java.concurrentmodification; import org.junit.Test; import java.util.ArrayList; +import java.util.Collection; import java.util.ConcurrentModificationException; import java.util.Iterator; +import java.util.List; +import static java.util.stream.Collectors.toList; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.util.Lists.newArrayList; @@ -13,7 +16,7 @@ public class ConcurrentModificationUnitTest { @Test(expected = ConcurrentModificationException.class) public void givenIterating_whenRemoving_thenThrowException() throws InterruptedException { - ArrayList integers = newArrayList(1, 2, 3); + List integers = newArrayList(1, 2, 3); for (Integer integer : integers) { integers.remove(1); @@ -23,7 +26,7 @@ public class ConcurrentModificationUnitTest { @Test public void givenIterating_whenUsingIteratorRemove_thenNoError() throws InterruptedException { - ArrayList integers = newArrayList(1, 2, 3); + List integers = newArrayList(1, 2, 3); for (Iterator iterator = integers.iterator(); iterator.hasNext();) { Integer integer = iterator.next(); @@ -38,8 +41,8 @@ public class ConcurrentModificationUnitTest { @Test public void givenIterating_whenUsingRemovalList_thenNoError() throws InterruptedException { - ArrayList integers = newArrayList(1, 2, 3); - ArrayList toRemove = newArrayList(); + List integers = newArrayList(1, 2, 3); + List toRemove = newArrayList(); for (Integer integer : integers) { if(integer == 2) { @@ -54,10 +57,24 @@ public class ConcurrentModificationUnitTest { @Test public void whenUsingRemoveIf_thenRemoveElements() throws InterruptedException { - ArrayList integers = newArrayList(1, 2, 3); + Collection integers = newArrayList(1, 2, 3); integers.removeIf(i -> i == 2); assertThat(integers).containsExactly(1, 3); } + + @Test + public void whenUsingStream_thenRemoveElements() { + Collection integers = newArrayList(1, 2, 3); + + List collected = integers + .stream() + .filter(i -> i != 2) + .map(Object::toString) + .collect(toList()); + + assertThat(collected).containsExactly("1", "3"); + } + }