對文件中出現的單詞排序次數

package FileRead;
import javax.persistence.criteria.CriteriaBuilder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.*;

class name{
    String name=new String();
    int num=0;
}
public class FileRead {
    public static void main(String[] args) {
        try {
            FileInputStream fs=new FileInputStream("E:\\1.txt");
            Scanner sc= new Scanner(fs);
            int num=0;
            HashMap<String,Integer> ts=new HashMap<String, Integer>();

            LinkedList<name> list =new LinkedList<name>();
            while (sc.hasNext()){
                String s=sc.next();
                if(ts.containsKey(s)){
                    Integer i=ts.get(s)+1;
                    ts.put(s,i);
                }
                else {
                    ts.put(s,1);
                }
                num++;
            }
            System.out.println("開始排序.....");

            int i=0;
            int [] nums=new int[num];
            Set<String> keys=ts.keySet();
            for(String key:keys){

                nums[i]=ts.get(key);
                name n1=new name();
                n1.num=nums[i];
                n1.name=key;
                list.add(n1);
            }
           Collections.sort(list, new Comparator<name>() {
               @Override
               public int compare(name o1, name o2) {
                   if(o1.num<o2.num){
                       return 1;
                   }
                   else if(o1.num==o2.num){
                       return 0;
                   }
                   return -1;
               }
           });
            for(name n1:list){
                System.out.println(n1.num+":"+n1.name);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

整體思想就是先把文件中的數據全部讀出來後,存入一個map中。然後對已經存在的他的出現次數+1,然後接着put進去map中。 最後創建一個鏈表,裏面存儲name對象。然後對list進行排序,根據Collections.sort(list,new Coparator<name>(){

    public int compare(name n1,name n2){

        if(n1.num<n2.num){

            return 1;        

        }else(n1.num==n2.num){

            return 0;    

        }

        return -1;

    }

})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章