我有一个可调用列表:
List<Pair<String, Callable<Integer>>> callabes;
我想使用 ExecutorService::invokeAll
调用所有这些可调用对象,并将此列表变为:List<Pair<String, Integer>>
。
我该怎么做?
我的执行程序服务是一个固定线程池,我希望受益于它对并行线程数量的限制
最佳答案
我猜测您正在使用 Apache Commons
Pair
。你遗漏了该信息。如果是这样,则该Pair
基本上是一个具有key
和value
的对象。您可以使用stream
和map
来收集值
。
示例应用程序:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
/**
*
* @author blj0011
*/
public class Main
{
public static void main(String[] args)
{
List<Pair<Integer, String>> test = new ArrayList();
test.add(Pair.of(1, "one"));
test.add(Pair.of(2, "two"));
test.add(Pair.of(3, "three"));
List<String> values = test.stream().map(Pair::getValue).collect(Collectors.toList());
keys.forEach(System.out::println);
}
}
您的潜在翻译:
List<Callable<Integer>> values = test.stream().map(Pair::getValue).collect(Collectors.toList());
关于java - 对列表对的值运行 invokeAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276173/