使用java从大型文件(包含1000万行)中搜索内容(特定ID)的最佳方法

使用java从大型文件(包含1000万行)中搜索内容(特定ID)的最佳方法,java,java.util.concurrent,Java,Java.util.concurrent,我有一个包含至少1000万行的巨大文件,我需要使用java从该文件中搜索特定的唯一单词(ID)。请建议我最好的和最快的方式,这将消耗很少的处理时间来实现这一点 Isjava.util.concurrent包将非常有用。如果是,请告诉我怎么做 您可以将读取和搜索操作拆分为单独的线程。这样,你的搜索不会打断你的阅读。然而,由于IO将是主要的瓶颈,我怀疑您是否会看到性能的大幅提升。尝试以下代码:希望它能在您的1分钟时限内完成 String search="searchMe"; String

我有一个包含至少1000万行的巨大文件,我需要使用java从该文件中搜索特定的唯一单词(ID)。请建议我最好的和最快的方式,这将消耗很少的处理时间来实现这一点


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。抱歉的打字错误。一千万