📜  Java 8中迭代带有索引的流Stream

📅  最后修改于: 2020-03-29 03:26:19             🧑  作者: Mango

给定Java中的Stream,任务是在索引的帮助下对其进行迭代。
例子:
输入:Stream= [G,e,e,k,s]
输出:[0-> G,1-> e,2-> e,3-> k,4-> s]

输入:Stream= [G,e,e,k,s,F,o,r,G,e,e,k,s]
输出:[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]

  • 方法1:使用IntStream。
  1. 使用range()方法从数组中获取Stream。
  2. 使用mapToObj()方法将流Stream的每个元素与与其关联的索引进行映射
  3. 打印带有索引的元素
    // Java展示迭代带有索引的流Stream
    import java.util.stream.IntStream;
    class GFG {
        public static void main(String[] args)
        {
            String[] array = { "G", "e", "e", "k", "s" };
            // 迭代带有索引的流Stream
            IntStream
                // 从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]))
                // 打印元素
                .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展示迭代带有索引的流Stream
      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
              AtomicInteger index = new AtomicInteger();
              // Iterate over the Stream with indices
              Arrays
                  // 从array获取流
                  .stream(array)
                  // 把每个元素映射map到对应的索引
                  .map(str -> index.getAndIncrement() + " -> " + str)
                  // 打印元素和索引
                  .forEach(System.out::println);
          }
      }

      输出:

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