我使用Java8 natural
为自然数的无限序列(Stream
)定义了iterator
。
IntStream natural = IntStream.iterate(0, i -> i + 1);
natural
.limit(10)
.forEach(System.out::println);
现在,我想用Java8 generator
定义它。
静态流生成(供应商)
最简单的方法是什么?感谢。
答案 0 :(得分:24)
使用生成器,您需要跟踪当前索引。一种方法是:
IntStream natural = IntStream.generate(new AtomicInteger()::getAndIncrement);
注意:我使用AtomicInteger作为可变整数而不是其线程安全性:如果您并行化流,则顺序将不会如预期那样。
答案 1 :(得分:19)
这内置于$ openssl s_client -connect smtp.gmail.com:587 -starttls smtp < /dev/null
connect: Bad file number
connect:errno=9
:
xlApp.Visible = True
这将返回所有值,但不包括Set xlApp = New Excel.Application
。
答案 2 :(得分:12)
注意:@assylias使用AtomicInteger
设法使用lambda。他应该接受答案。
我不确定你能用lambda做到这一点(因为它是有状态的),但是使用普通的Supplier
这会有效:
IntSupplier generator = new IntSupplier() {
int current = 0;
public int getAsInt() {
return current++;
}
};
IntStream natural = IntStream.generate(generator);
然而,我更喜欢您当前的解决方案,因为这是iterate(int seed, IntUnaryOperator f)
恕我直言的目的:
IntStream natural = IntStream.iterate(0, i -> i + 1);