Program to take every nth element from a Java 8 stream

By | March 24, 2023

To take every nth element from a Java 8 stream, you can use the IntStream.range() method to create a stream of indices, and then use the filter() method to select only the elements with indices that are multiples of n.

Here’s an example code snippet that demonstrates this approach:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

int n = 3;

List<Integer> result = IntStream.range(0, list.size())

        .filter(i -> i % n == n – 1)

        .mapToObj(list::get)

        .collect(Collectors.toList());

System.out.println(result); // Output: [3, 6, 9]

In the above example, we have a list of integers and we want to take every 3rd element. We first specify the value of n as 3. Then, we use the IntStream.range() method to create a stream of indices from 0 to list.size() – 1. Next, we use the filter() method to select only the indices that are multiples of n (i.e., indices where the remainder of the division by n is n – 1). Finally, we use the mapToObj() method to convert the filtered indices back to the original elements from the list, and collect them into a new list using the Collectors.toList() method.

Leave a Reply

Your email address will not be published. Required fields are marked *