我在java中给出了列表
List<String> list;
我有一个函数,它接受String并给出CompletionStage。我想迭代遍历列表并按顺序处理每个任务,也就是说,当一个任务给出结果时,我只想从列表中安排下一个任务。有没有办法在不调用.get()
的情况下异步执行此操作我还希望能够在此处中途停留,具体取决于之前任务的结果。
答案 0 :(得分:1)
// Starting off like this means the loop doesn't need to special case the first iteration
CompletionStage<Result> stage = CompletableFuture.completedFuture(null);
for (String str : list) {
stage = stage.thenCompose(result -> shouldStop(result) ? result : yourFunction(str));
}
这样做的最终结果是stage
是一长串CompletionStage
个对象的最终结尾。序列中的每个阶段仅在前一阶段完成时执行,因为这是thenCompose
(以及所有CompletionStage
链接方法)的工作方式。每个阶段都会调用你的函数并将结果传递给下一个阶段 - 直到你得到你想要停止的结果,此时shouldStop
检查将使所有剩余的阶段直接通过结果直到{ {1}}本身已完成该结果值。
答案 1 :(得分:-1)
您可以使用自定义的for循环循环到列表中,然后在for循环中,您可以执行任何操作,例如continue,break,...
这是一个如何循环遍历java中的列表的示例:
List<String> list;//here assumed that you already initialized your list
for(String l: list) {//here each element of list is called l
//Do what ever you want to do here
System.out.println("single element of list: "+ l);
}
希望这就是你要找的东西。 更新我是否适用于修改