我想使用“IntStream”来执行回程。所以,普通的IntStream.range样子:IntStream.range(1, 10) .forEach(System.out::println);但我需要,像这样:IntStream.range(10, 1) .forEach(System.out::println);如何实现?
2 回答
慕森卡
TA贡献1806条经验 获得超8个赞
检查这些示例
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);
}
}
慕婉清6462132
TA贡献1804条经验 获得超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)应该返回相同的数字,但按降序排列,所以仍然是“upper”-exclusive,这现在意味着排除第一个值,而不是最后一个值。
添加回答
举报
0/150
提交
取消