我有一个List< String>称为线和巨大的(~3G)Set< String>叫做voc.我需要从voc中的行中找到所有行.我可以这样多线程吗?
目前我有这个简单的代码:
for(String line: lines) {
if (voc.contains(line)) {
// Great!!
}
}
PS:我正在使用javolution.util.FastMap,因为它在填充期间表现更好.
最佳答案
这是一个可能的实现.请注意,错误/中断处理已被省略,但这可能会给您一个起点.我包含了一个main方法,因此您可以将其复制并粘贴到IDE中以进行快速演示.
编辑:清理一点以提高可读性和列表分区
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ParallelizeListSearch {
public static void main(String[] args) throws InterruptedException,ExecutionException {
List