📜  在Java 8 中使用索引迭代流的程序

📅  最后修改于: 2022-05-13 01:55:11.319000             🧑  作者: Mango

在Java 8 中使用索引迭代流的程序

给定Java中的 Stream ,任务是在索引的帮助下对其进行迭代。

例子:

  • 方法一:使用 IntStream。
    1. 使用 range() 方法从数组中获取 Stream。
    2. 使用 mapToObj() 方法将流的每个元素映射到与其关联的索引
    3. 打印带有索引的元素
    // 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);
        }
    }
    
    输出:
    0 -> G
    1 -> e
    2 -> e
    3 -> k
    4 -> s
    
  • 方法 2:使用 AtomicInteger。
    1. 为索引创建一个 AtomicInteger。
    2. 使用 Arrays.stream() 方法从数组中获取 Stream。
    3. 使用 map() 方法将流的每个元素映射到与其关联的索引,其中每次在 getAndIncrement() 方法的帮助下通过自动递增索引从 AtomicInteger 获取索引。
    4. 打印带有索引的元素。
    // 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);
        }
    }
    
    输出:
    0 -> G
    1 -> e
    2 -> e
    3 -> k
    4 -> s