请帮忙解释下面的代码
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();
}
}
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();
}
}
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();
}
}我再代码中加了些注释,你看看!