当前位置: 首页 > 知识库问答 >
问题:

流API,有没有一种方法可以使用instream迭代降序。范围

斜淳
2023-03-14

例如,Instream。范围(0,10)-从索引0迭代到索引10。

Instream。范围(10,0)-但从10到0不起作用,如何使用流API实现?

共有3个答案

广昊昊
2023-03-14

如果您希望在开始/结束转置时重复相同的一组数字,则这将在start时替换范围

IntStream range(int start, int end) {
    return start < end ? IntStream.range(start,end) 
                       : IntStream.range(-start+1, -end+1).map(i -> -i);
}
range(2,5).forEach(System.out::println);
2
3
4

range(5,2).forEach(System.out::println)
4
3
2

如果您希望保留(startInclusive,endExclusive)的含义,请修改为:

IntStream range2(int start, int end) {
    return start < end ? IntStream.range(start,end) 
                       : IntStream.range(-start, -end).map(i -> -i);
}

range2(5,2).forEach(System.out::println)
5
4
3

阳文轩
2023-03-14

您不能使用range()生成下降流。Javadoc明确指定步骤是1的增量。如果有提供一个步骤的选择,那么我们可以。然而,有不同的方法可以实现相同的目标。

IntStream.iterate(10, i -> i >= 1, i -> --i)


IntStream.rangeClosed(1, 10).boxed().sorted(Comparator.reverseOrder())


IntStream.range(-10, 0).map(i -> -i)

在这三种方法中,使用和迭代方法将是最好的方法。

微生曾琪
2023-03-14

您可以使用IntStream。迭代(initialValue、hasNext、next):

IntStream.iterate(10, i -> i >= 0, i -> --i)

如果你被java 8卡住了:

IntStream.iterate(10, i -> --i).limit(10)
 类似资料:
  • Go的范围可以在地图和切片上迭代,但我想知道是否有一种方法可以在一系列数字上迭代,比如: 或者有没有一种方法来表示Go中的整数范围,就像Ruby对类范围所做的那样?

  • 例如,-从索引0迭代到索引10。 -但从10到0不起作用,如何使用流API实现?

  • 问题内容: 在访问流中的索引时,是否有一种简洁的方法可以在流上进行迭代? 与此处给出的LINQ示例相比,这似乎令人失望 有没有更简洁的方法? 此外,似乎拉链已移动或已被移除… 问题答案: 最干净的方法是从索引流开始: 结果列表仅包含“ Erik”。 当你习惯于循环时,一种看起来更熟悉的替代方法是使用可变对象维护临时计数器,例如: 注意,在并行流上使用后一种方法可能会中断,因为不必“按顺序”处理项目

  • 但我对它并不完全满意,主要有两个原因 我“滥用”了函数。在Stream API中,每个函数都有其明确、明确的用途:被认为是计算最大值,被认为是根据条件进行筛选,被认为是生成增量累加的值,等等。 这样做会阻止我使用Streams强大的机制:如果我想将搜索限制在前两个结果上怎么办? 这里我使用了,因为(据我所知)它是唯一一个允许比较两个值的函数,而这些值可以在某种程度上导致类似于“当前值”和“下一个值

  • 问题内容: Go的范围可以遍历地图和切片,但是我想知道是否有一种方法可以遍历一系列数字,例如: 还是有一种方法可以像Go语言中的Ruby 类那样在Go中表示整数范围? 问题答案: 您可以并且应该只编写一个for循环。简单,明显的代码就是Go方式。

  • 问题内容: 嗨,我想使用WMI类来查找应用程序和产品信息。但是问题是我想使用Java或任何脚本语言(如python,javascript或perl)。我听说过JWMI,这可能是一个选择。有人可以帮我吗??? 问题答案: JavaScript和Java不是一回事。 JavaScript Windows脚本宿主(WSH)下提供了JavaScript。有了它,访问WMI相当容易: jWMI(Java)