请帮忙解释下面的代码
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MyTest {
  
 private  Map<String, Integer> m = new HashMap<String, Integer>(); public void tongJi(File f)
 {
  try
  {
       BufferedReader reader = new BufferedReader(new FileReader(f));
    String str = null;
    while((str = reader.readLine()) != null)
    {
     str = str.replaceAll("[,.]", " ");
     for(String s : str.split(" "))
     {
      if(s.length() == 0) continue;
      if(m.containsKey(s))
      {
       int amount = m.get(s)+1;
       m.put(s, amount);
      }else
      {
       m.put(s, 1);
      }
     }
    }
    reader.close();
     
  }catch(IOException e)
  {
   
  }
 }
 
 public List<Map.Entry<String, Integer>> paiXu()
 {
   List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(m.entrySet());
   Collections.sort(list, new Comparator<Map.Entry<String,Integer>>() {   
          public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {   
              return Collator.getInstance().compare(o1.getKey(), o2.getKey());    
          }   
      });   
   return list;
 }
 
 public static void main(String[] args) throws IOException
 {
  File f = new File("e:\\1.txt");
  MyTest mt = new MyTest();
  mt.tongJi(f);
  List<Map.Entry<String, Integer>> result = mt.paiXu();
  File out = new File("e:\\2.txt");
  if(!out.exists()) out.createNewFile();
  FileWriter fw = new FileWriter(out);
  fw.write("统计记录:"+"\r\n");
  for(Map.Entry<String, Integer> entry : mt.m.entrySet())
  {
   fw.write(entry.getKey()+ " "+entry.getValue()+"次 " +"\r\n");
  }
  
  fw.write("非重复数排序:");
  for(Map.Entry<String, Integer> entry : result)
  {
   if(entry.getValue() == 1)
   {
    fw.write(entry.getKey()+"  ");
   }
  }
  fw.close();
 }

解决方案 »

  1.   


    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.text.Collator;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;public class MyTest { private Map<String, Integer> m = new HashMap<String, Integer>(); public void tongJi(File f) {
    try {
    BufferedReader reader = new BufferedReader(new FileReader(f));
    String str = null;
    //从文件中读取没一行,然后用“,”或“.”分割,如果再m中没有该子串的话,就计数为1,如果有的话
    //就加1,这样执行完以后,就统计出了每个子串出现的次数
    while ((str = reader.readLine()) != null) {
    str = str.replaceAll("[,.]", " ");
    for (String s : str.split(" ")) {
    if (s.length() == 0)
    continue;
    if (m.containsKey(s)) {
    int amount = m.get(s) + 1;
    m.put(s, amount);
    } else {
    m.put(s, 1);
    }
    }
    }
    reader.close(); } catch (IOException e) { }
    } //自定义Comparator,对m中的键值对进行排序,返回排序后的结果
    public List<Map.Entry<String, Integer>> paiXu() {
    List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(
    m.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
    public int compare(Map.Entry<String, Integer> o1,
    Map.Entry<String, Integer> o2) {
    return Collator.getInstance().compare(o1.getKey(), o2.getKey());
    }
    });
    return list;
    } public static void main(String[] args) throws IOException {
    File f = new File("e:\\1.txt");
    MyTest mt = new MyTest();
    mt.tongJi(f);
    List<Map.Entry<String, Integer>> result = mt.paiXu();
    File out = new File("e:\\2.txt");
    if (!out.exists())
    out.createNewFile();
    FileWriter fw = new FileWriter(out);
    //写统计结果到文件e:\\2.txt
    fw.write("统计记录:" + "\r\n");
    for (Map.Entry<String, Integer> entry : mt.m.entrySet()) {
    fw.write(entry.getKey() + " " + entry.getValue() + "次 " + "\r\n");
    }

    //写排序后的非重复子串(即键)到文件
    fw.write("非重复数排序:");
    for (Map.Entry<String, Integer> entry : result) {
    if (entry.getValue() == 1) {
    fw.write(entry.getKey() + " ");
    }
    }
    fw.close();
    }
    }我再代码中加了些注释,你看看!