All pastes #962994 Raw Edit

Miscellany

public java v1 · immutable
#962994 ·published 2008-03-30 04:23 UTC
rendered paste body
// counts words //combined effort: wlfshmn from #java on IRC Undernet and Raziiimport java.io.*;import java.util.*;public final class WordCount3{    //counts the words in a text file...    private static final Map<String, int[]> dictionary = new HashMap<String, int[]>(500000);    private static int tWords = 0;    private static int tLines = 0;    private static long tBytes = 0;    public static void main(final String[] args) throws Exception    {        System.out.println("Lines\tWords\tBytes\tFile\n");        //TIME STARTS HERE        final long start = System.currentTimeMillis();        for (String arg : args)        {      File file = new File(arg);       if (!file.isFile()) {        continue;      }       int numLines = 0;      int numWords = 0;      long numBytes = file.length();      Integer I1 = new Integer(1);            BufferedReader input = new BufferedReader(new         InputStreamReader(new FileInputStream(arg),                 "ISO-8859-1"));                      StreamTokenizer st = new StreamTokenizer(input);      st.ordinaryChar('/'); st.ordinaryChar('.');      st.ordinaryChar('-'); st.ordinaryChar('"');      st.ordinaryChar('\'');  st.eolIsSignificant(true);        while (st.nextToken() != StreamTokenizer.TT_EOF) {         if (st.ttype == StreamTokenizer.TT_EOL) {          numLines++;        }         else if (st.ttype == StreamTokenizer.TT_WORD) {          numWords++;          countWord(st.sval);           }        }      System.out.println(          numLines + "\t" + numWords + "\t" + numBytes + "\t" +           arg);      tLines += numLines;      tWords += numWords;      tBytes += numBytes;    }        //only converting it to TreepMap so the result appear ordered, I could have        //moved this part down to printing phase (i.e. not include it in time).         TreeMap<String, int[] > sort = new TreeMap<String, int[]> (dictionary);        //TIME ENDS HERE        final long end = System.currentTimeMillis();        System.out.println("---------------------------------------");        if (args.length > 1)        {            System.out.println(tLines + "\t" + tWords + "\t" + tBytes + "\tTotal");            System.out.println("---------------------------------------");        }        for (Map.Entry<String, int[]> pairs : sort.entrySet())        {            System.out.println(pairs.getValue()[0] + "\t" + pairs.getKey());        }        System.out.println("Time: " + (end - start) + " ms");    }    private static void countWord(String word)    {        int[] count = dictionary.get(word);        if (count != null)        {            count[0]++;        }        else        {            dictionary.put(word, new int[]{1});        }    }}