如何在流API中使用后退范围?

时间:2018-10-26 21:39:00

标签: java java-stream

我想使用“ IntStream”执行后退范围。

因此,普通的IntStream.range如下:

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

但是我需要这样:

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

如何实现?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

一种方法是计算倒数:

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)应该返回相同数字,但是按降序排列,因此仍然是“ upper”(排除),这意味着要排除第一个值,而不是最后一个值