All pastes #977902 Raw Edit

Jwc

public java v1 · immutable
·published 2008-04-09 04:35 UTC
rendered paste body
//counts the words in a text file... //by Razii with some hints from import java.io.*;import java.util.*;public final class Jwc{ private static final Map<String, int[]> dictionary =         new HashMap<String, int[]>(16000, 0.4f); private static int tWords = 0; private static int tLines = 0; private static int 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;   final int numBytes = (int) file.length();   StringBuilder sb = new StringBuilder();   boolean inword = false;      FileInputStream in = new FileInputStream(arg);         final byte[] buf = new byte[4096];while (in.read(buf, 0, 4096) != -1){      for (int i = 0; i < 4096; i++)    {    char c = (char) buf[i];    if (c == '\n') numLines++;    else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')    {     sb.append(c);     inword = true;    }    else if (inword)    {     numWords++;     String s = sb.toString();     int[] count = dictionary.get(s);     if (count != null)     {count[0]++;}     else     {dictionary.put(s, new int[] {1});}     sb.delete(0, sb.length());     inword = false;    }   }}   System.out.println( numLines + "\t" + numWords + "\t" + numBytes + "\t" + arg);   tLines += numLines;   tWords += numWords;   tBytes += numBytes;  }  //Sorts here  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"); }}