Optional<String> s = Optional.of("Java");
assertEquals(Optional.of("JAVA"), s.map(String::toUpperCase));
assertEquals(Optional.of(Optional.of("JAVA")),
Optional
.of("java")
.map(s -> Optional.of("JAVA")));
assertEquals(Optional.of("JAVA"), Optional
.of("java")
.flatMap(s -> Optional.of("JAVA")));
List<String> myList = Stream.of("hello", "world")
.map(String::toUpperCase)
.collect(Collectors.toList());
assertEquals(asList("HELLO", "WORLD"), myList);
List<List<String>> list = Arrays.asList(
Arrays.asList("hello"),
Arrays.asList("world"));
System.out.println(list);
System.out.println(list
.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList()));