Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将复杂的Java流转换为循环?_Java_Loops_Java Stream - Fatal编程技术网

如何将复杂的Java流转换为循环?

如何将复杂的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的概念,但我不确定

我有一个流表达式,我想在Java中转换成一个简单的循环(forEach或while)。下面是表达式:

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
非常感谢这真的很有帮助!非常感谢这真的很有帮助