我想使用“ IntStream”执行后退范围。
因此,普通的IntStream.range
如下:
IntStream.range(1, 10)
.forEach(System.out::println);
但是我需要这样:
IntStream.range(10, 1)
.forEach(System.out::println);
如何实现?
答案 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”(排除),这意味着要排除第一个值,而不是最后一个值