Related Articles

Related Articles

Program to Iterate over a Stream with Indices in Java 8
  • Last Updated : 11 Dec, 2018

Given a Stream in Java, the task is to iterate over it with the help of indices.

Examples:

Input: Stream = [G, e, e, k, s]
Output: [0 -> G, 1 -> e, 2 -> e, 3 -> k, 4 -> s]

Input: Stream = [G, e, e, k, s, F, o, r, G, e, e, k, s]
Output: [0 -> G, 1 -> e, 2 -> e, 3 -> k, 4 -> s, 5 -> F, 6 -> o, 7 -> r, 8 -> G, 9 -> e, 10 -> e, 11 -> k, 12 -> s]

  • Method 1: Using IntStream.
    1. Get the Stream from the array using range() method.
    2. Map each elements of the stream with an index associated with it using mapToObj() method
    3. Print the elements with indices
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java program to iterate over Stream with Indices
      
    import java.util.stream.IntStream;
      
    class GFG {
        public static void main(String[] args)
        {
      
            String[] array = { "G", "e", "e", "k", "s" };
      
            // Iterate over the Stream with indices
            IntStream
      
                // Get the Stream from the array
                .range(0, array.length)
      
                // Map each elements of the stream
                // with an index associated with it
                .mapToObj(index -> String.format("%d -> %s"
                                           index, array[index]))
      
                // Print the elements with indices
                .forEach(System.out::println);
        }
    }

    chevron_right

    
    

    Output:

    0 -> G
    1 -> e
    2 -> e
    3 -> k
    4 -> s
    
  • Method 2: Using AtomicInteger.
    1. Create an AtomicInteger for index.
    2. Get the Stream from the array using Arrays.stream() method.
    3. Map each elements of the stream with an index associated with it using map() method where the index is fetched from the AtomicInteger by auto-incrementing index everytime with the help of getAndIncrement() method.
    4. Print the elements with indices.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Java program to iterate over Stream with Indices
      
    import java.util.stream.IntStream;
    import java.util.*;
    import java.util.concurrent.atomic.AtomicInteger;
      
    class GFG {
        public static void main(String[] args)
        {
      
            String[] array = { "G", "e", "e", "k", "s" };
      
            // Create an AtomicInteger for index
            AtomicInteger index = new AtomicInteger();
      
            // Iterate over the Stream with indices
            Arrays
      
                // Get the Stream from the array
                .stream(array)
      
                // Map each elements of the stream
                // with an index associated with it
                .map(str -> index.getAndIncrement() + " -> " + str)
      
                // Print the elements with indices
                .forEach(System.out::println);
        }
    }

    chevron_right

    
    

    Output:

    0 -> G
    1 -> e
    2 -> e
    3 -> k
    4 -> s
    

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :