使用java从大型文件(包含1000万行)中搜索内容(特定ID)的最佳方法
我有一个包含至少1000万行的巨大文件,我需要使用java从该文件中搜索特定的唯一单词(ID)。请建议我最好的和最快的方式,这将消耗很少的处理时间来实现这一点使用java从大型文件(包含1000万行)中搜索内容(特定ID)的最佳方法,java,java.util.concurrent,Java,Java.util.concurrent,我有一个包含至少1000万行的巨大文件,我需要使用java从该文件中搜索特定的唯一单词(ID)。请建议我最好的和最快的方式,这将消耗很少的处理时间来实现这一点 Isjava.util.concurrent包将非常有用。如果是,请告诉我怎么做 您可以将读取和搜索操作拆分为单独的线程。这样,你的搜索不会打断你的阅读。然而,由于IO将是主要的瓶颈,我怀疑您是否会看到性能的大幅提升。尝试以下代码:希望它能在您的1分钟时限内完成 String search="searchMe"; String
Is
java.util.concurrent
包将非常有用。如果是,请告诉我怎么做 您可以将读取和搜索操作拆分为单独的线程。这样,你的搜索不会打断你的阅读。然而,由于IO将是主要的瓶颈,我怀疑您是否会看到性能的大幅提升。尝试以下代码:希望它能在您的1分钟时限内完成
String search="searchMe";
String thisLine = null;
try{
// open input stream test.txt for reading purpose.
BufferedReader br = new BufferedReader("MYFILE");
boolean found=true;
while ((thisLine = br.readLine()) != null) {
if(thisLine.equals(search)){
System.out.println(search + " was found.");
found=true
break;
}
}
if(!found){
System.out.println("not found");
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
如果使用其他程序将文件拆分为更小的“临时”文件,速度可能会更快。并使用线程处理每个文件(不能100%确定这是否可行)
显然,最好的解决方案是能够编辑生成此文件的程序,并使其创建几个不同的文件(可能在不同的硬盘驱动器中)。然后,您可以轻松地使用线程来提高速度。您是在寻找数据结构选项还是本机JAVA方法?是1010000000行还是1000万行?此外,文件多久更改一次?是否值得为文件中的单词创建索引?如果您需要从硬盘读取文件,瓶颈将是I/O,并行化将无济于事…该文件将非常频繁地更新(每分钟一次)。我需要的解决方案,以实现这一点,使用java 7。抱歉的打字错误。一千万