diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MapAndFlatMap.java b/core-java/src/test/java/com/baeldung/java8/Java8MapAndFlatMap.java new file mode 100644 index 0000000000..7098f88f30 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java8/Java8MapAndFlatMap.java @@ -0,0 +1,52 @@ +package com.baeldung.java8; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static java.util.Arrays.asList; +import static org.junit.Assert.assertEquals; + +public class Java8MapAndFlatMap { + + @Test + public void givenStream_whenCalledMap_thenProduceList() { + List myList = Stream.of("a", "b") + .map(String::toUpperCase) + .collect(Collectors.toList()); + assertEquals(asList("A", "B"), myList); + } + + @Test + public void givenStream_whenCalledFlatMap_thenProduceFlattenedList() throws Exception { + List> list = Arrays.asList(Arrays.asList("a"), Arrays.asList("b")); + System.out.println(list); + + System.out.println(list + .stream().flatMap(Collection::stream) + .collect(Collectors.toList())); + } + + @Test + public void givenOptional_whenCalledMap_thenProduceOptional() { + Optional s = Optional.of("test"); + assertEquals(Optional.of("TEST"), s.map(String::toUpperCase)); + } + + @Test + public void givenOptional_whenCalledFlatMap_thenProduceFlattenedOptional() { + assertEquals(Optional.of(Optional.of("STRING")), Optional + .of("string") + .map(s -> Optional.of("STRING"))); + + assertEquals(Optional.of("STRING"), Optional + .of("string") + .flatMap(s -> Optional.of("STRING"))); + } + +}