1. 程式人生 > >java讀取一篇英語文章並且統計出單詞出現的頻率並從高到低輸出

java讀取一篇英語文章並且統計出單詞出現的頻率並從高到低輸出

package com.amt.crm.controller;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;


public class test2 {
    public static void main(String [] args) throws Exception {

        BufferedReader br = new BufferedReader(new FileReader("C:\\test1\\b.txt"));

        StringBuffer sb = new
StringBuffer(); String text =null; while ((text=br.readLine())!= null){ sb.append(text);// 將讀取出的字元追加到stringbuffer中 } br.close(); // 關閉讀入流 String str = sb.toString().toLowerCase(); // 將stringBuffer轉為字元並轉換為小寫 String[] words = str.split("[^(a-zA-Z)]+"
); // 非單詞的字元來分割,得到所有單詞 Map<String ,Integer> map = new HashMap<String, Integer>() ; for(String word :words){ if(map.get(word)==null){ // 若不存在說明是第一次,則加入到map,出現次數為1 map.put(word,1); }else{ map.put(word,map.get(word)+1); // 若存在,次數累加1
} } // 排序 List<Map.Entry<String ,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet()); Comparator<Map.Entry<String,Integer>> comparator = new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> left, Map.Entry<String, Integer> right) { return (left.getValue().compareTo(right.getValue())); } }; // 集合預設升序升序 Collections.sort(list,comparator); for(int i=0;i<list.size();i++){// 由高到低輸出 System.out.println(list.get(list.size()-i-1).getKey() +":"+list.get(list.size()-i-1).getValue()); } } }