Java 8 Streams Java Java API
Interface:
java.util.stream.Stream
Method:
IntStream flatMapToInt(Function<? super T,? extends IntStream> mapper)
This intermediate operation returns an IntStream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.
Examples
package com.logicbig.example.stream;
import java.util.Arrays; import java.util.List; import java.util.stream.IntStream;
public class FlatMapToIntExample {
public static void main(String... args) { List<List<String>> listOfLists = Arrays.asList( Arrays.asList("1", "2"), Arrays.asList("5", "6"), Arrays.asList("3", "4") );
IntStream intStream = listOfLists.stream() .flatMapToInt(childList -> childList.stream() .mapToInt(Integer::new)); //let's peek and find sum of the elements int sum = intStream.peek(System.out::println) .sum(); System.out.println("sum: " + sum); } }
Output1 2 5 6 3 4 sum: 21
Using Array of arrays. package com.logicbig.example.stream;
import java.util.Arrays; import java.util.stream.IntStream;
public class FlatMapToIntExample2 {
public static void main(String... args) { String[][] arrayOfArrays = {{"1", "2"}, {"5", "6"}, {"3", "4"}};
IntStream intStream = Arrays.stream(arrayOfArrays) .flatMapToInt(childArray -> Arrays.stream(childArray) .mapToInt(Integer::new)); int sum = intStream.peek(System.out::println) .sum(); System.out.println("sum: " + sum); } }
Output1 2 5 6 3 4 sum: 21
package com.logicbig.example.stream;
import java.util.Arrays; import java.util.List;
public class FlatMapToIntExample3 {
public static void main(String... args) { List<String[]> list = Arrays.asList( new String[]{"a", "b", "cc"}, new String[]{"d", "ee", "fff"} );
//converting to int array of each string's array length int[] ints = list.stream() .flatMapToInt(stringArray -> Arrays.stream(stringArray) .mapToInt(String::length)) .toArray(); System.out.println(Arrays.toString(ints));
//finding max int int i = list.stream() .flatMapToInt(stringArray -> Arrays.stream(stringArray) .mapToInt(String::length)) .max() .orElse(-1); System.out.println(i); } }
Output[1, 1, 2, 1, 2, 3] 3
|
|