マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

連絡方法がわからんのでトラックバックで

大学の後輩にブログのアドレスを教えてもらったはいいが、こっちのを教えていないままなので、トラックバックで通知。ついでにMake2Gramに手を付けておこう。クラス名のgをGに変えたのは単なるこだわり

import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;

import java.util.TreeMap;

public class Make2Gram{
    public static void main(String[] args) throws IOException{
        if(args.length == 0){
            System.out.println("引数にファイル名を指定してください");
            System.exit(1);
        }

        int N = 2;

        BufferedReader br = new BufferedReader(new FileReader(args[0]));
        StringBuilder sb = new StringBuilder();
        String line;

        while((line = br.readLine()) != null)
            sb.append(line);

        br.close();

        //ファイルの内容 改行抜き
        String text = sb.toString();

        //テキストの部分文字列とその出現回数を関連付けるMap
        //TreeMapなのでMapのキーにした部分文字列でソートされる
        TreeMap<String, Integer> gramMap = new TreeMap<String, Integer>();

        for(int i = 0; i < text.length() - N; i++){
            //テキストからN文字取り出す
            String gram = text.substring(i, i + N);

            if(gramMap.containsKey(gram)){
                //gramMapに登録されてる文字列ならカウントを増やす
                int count = gramMap.get(gram);
                count++;

                gramMap.put(gram, count);
            }else{
                //gramMapに登録されていない文字列ならカウント1で登録
                gramMap.put(gram, 1);
            }
        }

        for(String part : gramMap.keySet()){
            System.out.printf("%s : %d\n", part, gramMap.get(part));
        }
    }
}


通知先
http://d.hatena.ne.jp/cloudnet/