如何将复杂的Java流转换为循环?
我有一个流表达式,我想在Java中转换成一个简单的循环(forEach或while)。下面是表达式:如何将复杂的Java流转换为循环?,java,loops,java-stream,Java,Loops,Java Stream,我有一个流表达式,我想在Java中转换成一个简单的循环(forEach或while)。下面是表达式: Stream.generate(taskFactory::createTask) .limit(limit) .filter(Objects::nonNull) .map(taskMonitorFactory::startTask) .forEach(tasks::add); 我理解过滤器对于每个条目意味着if/else和map的概念,但我不确定
Stream.generate(taskFactory::createTask)
.limit(limit)
.filter(Objects::nonNull)
.map(taskMonitorFactory::startTask)
.forEach(tasks::add);
我理解过滤器对于每个条目意味着if/else和map的概念,但我不确定如何处理这些生成和限制函数。我真的是个新手。有什么建议吗?您的流翻译为:
for (int i = 0; i < limit; i++) {
Optional.ofNullable(taskFactory.createTask())
.map(taskMonitorFactory::startTask)
.ifPresent(tasks::add);
}
for(int i=0;i
或老派:
for (int i = 0; i < limit; i++) {
Task task = taskFactory.createTask();
if (task == null) {
continue;
}
tasks.add(taskMonitorFactory.startTask(task));
}
for(int i=0;i
generate
用于流创建,而限制告诉您应该检索多少元素-您可以使用一些来代替循环
for(int i = 0; i < limit; i++) {
Task task = taskFactory.createTask(); // assuming return type is some 'Task' class
if(task != null) {
task = taskMonitorFactory.startTask(task);
tasks.add(task);
}
}
for(int i=0;i
非常感谢这真的很有帮助!非常感谢这真的很有帮助