例如,Instream。范围(0,10)
-从索引0迭代到索引10。
Instream。范围(10,0)
-但从10到0不起作用,如何使用流API实现?
如果你想重复相同的数字集,如果开始/结束被转置,那么这将取代范围,如果开始
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
您不能使用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)
在这三种方法中,使用迭代方法是最好的方法。
您可以使用IntStream.iterate(初始化值,hasNext,下一步):
IntStream.iterate(10, i -> i >= 0, i -> i - 1)
如果你被java 8卡住了:
IntStream.iterate(10, i -> i - 1).limit(11)
问题内容: 内容: 我想说的是: 问题答案: 一种方法是手动处理此问题: 使用包装(扩展) 只要设置了值,就保留()线程和值 或者,通过一些反射(和),您可以: 呼叫 调用(针对上述每个线程) 呼叫 第一是更优选的。
问题内容: Go的范围可以遍历地图和切片,但是我想知道是否有一种方法可以遍历一系列数字,例如: 还是有一种方法可以像Go语言中的Ruby 类那样在Go中表示整数范围? 问题答案: 您可以并且应该只编写一个for循环。简单,明显的代码就是Go方式。
例如,-从索引0迭代到索引10。 -但从10到0不起作用,如何使用流API实现?
我有很多图像在绘制,我希望放入一个数组。手动将它们放入数组会花费太长的时间和代码。我想知道是否有一种方法来循环,如下所示:
我目前正在开发一个Java应用程序,并努力优化其内存使用。据我所知,我正在遵循正确垃圾回收的准则。但是,似乎我的堆似乎位于其最大大小,即使它不是必需的。 当计算机无人使用时,我的程序每小时运行一次资源密集型任务。这个任务使用了大量的内存,但是在任务完成后会立即释放所有的内存。NetBeans profiler显示内存使用情况如下: 我真的很想在不使用时将所有堆空间都还给操作系统。当程序在至少一个小
背景: 所以我有一个方法调用,我想保存到一个文本文件中。这样做的目的是将可运行的序列化对象保存到文本文件中,并在以后从文本文件中获取要执行的对象。 错误是: 我理解错误,Runnable是一个接口,它不能被序列化。然而,我还能做些什么来解决我的问题吗? 解决方案尝试1。错误