问题如下
这是一个我要查找的文本信息妾发初覆额:1
折花门前剧:2
郎骑竹马来:3
绕床弄青梅:4
同居长干里:5
两小无嫌猜:6
十四为君妇:7
羞颜未尝开:8
低头向暗壁:9
千唤不一回:10
十五始展眉:11
愿同尘与灰:12
常存抱柱信:13比如我现在输入一个查找条件 “同居长干里” 然后返回这一条整条信息 “同居长干里:5”我想了许久,还是不知该如何解决,还请各位路过的大师们帮帮忙!

解决方案 »

  1.   


    public static void main(String[] args) throws Exception
    {
    System.out.println(test());
    }
    public static String test() throws Exception
    {
    String input = new Scanner(System.in).next();
    String result = null;
    FileReader fr = new FileReader("e:/a.txt");
    BufferedReader br = new BufferedReader(fr);
    String str = null;
    while((str = br.readLine()) != null)
    {
    String tempStr = str.substring(0,5);
    if(tempStr.equals(input))
    {
    result = str;
    break;
    }
    }
    br.close();
    fr.close();
    return result;
    }
      

  2.   

    另一种方法是,把文件中的内容,全部读取出来,并放入HashMap<String, Integer>中,Key就是冒号左边的内容,Value就是冒号右边的数字。然后后面无论要查找的是啥,直接HashMap.get(str);就行了。好处是可以一次读取后多次快速查找,缺点是有内存开销,因为整个文件都要载入内存中。
      

  3.   

    先读取 str = br.readLine();
    然后判断 str.indexOf("要查找的字符串") != -1
    就返回
      

  4.   

    如果这个文档是动态更新的就有点麻烦啦。hashMap里面找不到,然后要更新HashMap;
      

  5.   

    我不能选择Map大概有200多万条数据,全都是诗
      

  6.   

    要么用1楼的一次扫描,要么就是全缓存起来,最后就是借助数据库。
    至于200多万条,似乎不算是问题吧?就算你有300万条,每条有100个字节,总计也就是3亿个字节,大概其不到300MB。32位的JVM可以使用 1.5G 左右内存,你这个太小意思了
      

  7.   

    LZ你想要的效果就是查找指定诗为第几行吧有200多万条用Map好像是有点不够效率除了逐行查找然后逻辑判断关注更优化效率的方法...
      

  8.   


    那你这个还是一次性扫描,这个不需要自己写代码去缓存,直接用1楼的代码,就已经实现了。无非是可以设置下BufferedReader(Reader in, int inputBufferSize)的缓存区大小而已。
      

  9.   

    查jdk文档 
    FileReader BufferedReader
    String 
    补习补习java基础
      

  10.   

    MyEclipse 报出 这个错误 Java heap space ,不知该如何解决..?
      

  11.   


    java讀取文件有很多方式,文件流就ok。lz的詩句寫的不錯啊。學文的?
      

  12.   


    内存不足,把JVM启动内存设置大点。