Close

Java 8 Streams - Stream.flatMapToInt Examples

Java 8 Streams Java Java API 


Interface:

java.util.stream.Stream

java.lang.AutoCloseableAutoCloseablejava.util.stream.BaseStreamBaseStreamjava.util.stream.StreamStreamLogicBig

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);
}
}

Output

1
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);
}
}

Output

1
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




See Also