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.
- Get the Stream from the array using range() method.
- Map each elements of the stream with an index associated with it using mapToObj() method
- Print the elements with indices
import java.util.stream.IntStream;
class GFG {
public static void main(String[] args)
{
String[] array = { "G" , "e" , "e" , "k" , "s" };
IntStream
.range( 0 , array.length)
.mapToObj(index -> String.format( "%d -> %s" ,
index, array[index]))
.forEach(System.out::println);
}
}
|
Output:
0 -> G
1 -> e
2 -> e
3 -> k
4 -> s
- Method 2: Using AtomicInteger.
- Create an AtomicInteger for index.
- Get the Stream from the array using Arrays.stream() method.
- 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.
- Print the elements 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" };
AtomicInteger index = new AtomicInteger();
Arrays
.stream(array)
.map(str -> index.getAndIncrement() + " -> " + str)
.forEach(System.out::println);
}
}
|
Output:
0 -> G
1 -> e
2 -> e
3 -> k
4 -> s