public class WordEntity implements Comparable<WordEntity>{ @Override public int compareTo(WordEntity o) { int cmp = count.intValue() - o.count.intValue(); return (cmp == 0 ? key.compareTo(o.key) : -cmp); //只需在这儿加一个负号就可以决定是升序还是降序排列 -cmp降序排列,cmp升序排列 //因为TreeSet会调用WorkForMap的compareTo方法来决定自己的排序 } private String key; private Integer count; public WordEntity ( String key,Integer count) { this.key = key; this.count = count; } public WordEntity(){ } @Override public String toString() { return key + " 出现的次数为:" + count; } public String getKey() { return key; } public Integer getCount() { return count; } }
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeMap; import java.util.TreeSet; public class WordCont { public void displayWordCount(String fileName){ //字符统计 try { BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line = null; TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); while((line=reader.readLine())!=null){ String str[] = line.split("\\s+"); for(int i = 0; i<str.length; i++){ String word = str[i].trim(); if(tm.containsKey(word)){ tm.put(word, tm.get(word)+1); }else{ tm.put(word, 1); } } } //输出我们想要的字符串格式 System.out.println("Word=Occurrences"); Iterator iterator=tm.entrySet().iterator(); while(iterator.hasNext()) { System.out.println(" "+iterator.next()); } } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } } }
import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("ÊäÈëÎļþ·¾¶£º\n"); Scanner in=new Scanner(System.in); String line=in.nextLine(); String fileName= line.trim(); WordCont wc = new WordCont(); wc.displayWordCount(fileName); } }