答案 1
是的,有一个简单的方法:
IntStream.iterate(0, i -> i + 2);
使用作为用例:
IntStream.iterate(0, i -> i + 2)
.limit(100)
.forEach(System.out::println);
打印出 0 到 198,以 2 为步长递增。
泛型方法是:
Stream.iterate(T seed, UnaryOperator<T> f);
后者在使用中可能更不常见。
答案 2
下面是一个示例:
PrimitiveIterator.OfInt it = new PrimitiveIterator.OfInt() {
private int value = 0;
@Override
public int nextInt() {
return value++;
}
@Override
public boolean hasNext() {
return true;
}
};
Spliterator.OfInt spliterator = Spliterators.spliteratorUnknownSize(it,
Spliterator.DISTINCT | Spliterator.IMMUTABLE |
Spliterator.ORDERED | Spliterator.SORTED);
IntStream stream = StreamSupport.intStream(spliterator, false);
正如你所看到的,这有点冗长。要打印此流的前 10 个元素,请执行以下操作:
stream.limit(10).forEach(System.out::println);
当然,您也可以转换元素,就像您在Scala示例中所做的那样:
IntStream plusTwoStream = stream.map(n -> n + 2);
请注意,有内置的无限流,例如它为您提供了随机整数的无限流。java.util.Random.ints()
推荐
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-
标签
推荐