【问题标题】:How to use back range in stream API? [duplicate]如何在流 API 中使用返回范围? [复制]
【发布时间】:2019-03-31 16:17:53
【问题描述】:

我想使用 `IntStream' 来执行返回范围。

所以,普通的IntStream.range 看起来像:

IntStream.range(1, 10)
    .forEach(System.out::println);

但我需要,像这样:

IntStream.range(10, 1)
    .forEach(System.out::println);

如何实现?

【问题讨论】:

    标签: java java-stream


    【解决方案1】:

    查看these 示例

    import java.util.stream.IntStream;
    
    // Generate an IntStream in Decreasing Order in Java
    class StreamUtils
    {
        public static void main(String[] args)
        {
            int start = 2;  // inclusive
            int end = 5;    // exclusive
    
            IntStream.iterate(end - 1, i -> i - 1)
                    .limit(end - start)
                    .forEach(System.out::println);
        }
    }
    

    【讨论】:

      【解决方案2】:

      一种方法是计算倒数:

      IntStream.range(1, 10)
               .map(i -> 10 - i)
               .forEach(System.out::println);
      

      输出

      9
      8
      7
      6
      5
      4
      3
      2
      1
      

      请记住,range 是排他的,所以range(1, 10) 生成数字 1-9。我在这里假设您的 range(10, 1) 应该返回 相同 的数字,但按降序排列,所以仍然是“上”-排他性的,这意味着排除第一个值,而不是最后一个值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 1970-01-01
        • 2022-06-12
        • 2022-08-18
        • 2015-07-20
        相关资源
        最近更新 更多