文件file1.txt的内容如下: 
  id:1    neighbor:3,4   id:6    neighbor:8 
  id:1    neighbor:3,4,5   id:6    neighbor:8,9 
如果这一行的id相同的话,我想只保留neighbor数量多的那个,同时把多余的空行也去掉,也就是将文件内容变成: 
  id:1    neighbor:3,4,5 
  id:6    neighbor:8,9 
或者将所得到的有用纪录存入另外一个新文件file2.txt,该如何做?

解决方案 »

  1.   

    遍历每行就可以啦
    定一个HashMap<key,TreeSet>
    id作为key
    如果id相同的话,就放在set中,顺便把重复的也给去掉啦
      

  2.   

    我是这样做了,但是不能把得到的新数据写入到file2.txt中,相关代码如下,帮我看看哪里出错了                public int File_process(File file_nodeinfo)
    {
    Map   map   =   new   HashMap();

    try
    {

    FileReader fr = new FileReader(file_nodeinfo);
          BufferedReader br = new BufferedReader(fr);
         
          FileWriter writer = new FileWriter("C:\\file2.txt"); 
            BufferedWriter bw = new BufferedWriter(writer);
         
    String Line = br.readLine();

    while(Line!=null)
    {
    String self_id = Line.substring(Line.indexOf("s")+8,Line.lastIndexOf("f")-4);
    String neighbor_info = Line.substring(Line.lastIndexOf(":")+1,Line.length());

    Iterator it = map.keySet().iterator();
    while(it.hasNext())

    Object key = it.next();
    if( key == self_id && (map.get(key).toString().length() < neighbor_info.length()))
    {
    map.put(self_id,neighbor_info);
    String Line1 = Line;
    bw.write(Line1);
    }


    map.put(self_id,neighbor_info);
    bw.write(Line);
    Line = br.readLine();

    }
    br.close();
    fr.close();

    writer.close();
    bw.close();
           


    }
    catch(FileNotFoundException e) 
    {
                                    e.printStackTrace();
    }
    catch(IOException e)
    {
    e.printStackTrace();
    }

    return 0;


    }