Link to code: BoggleStats.java

import java.io.InputStream;
import java.util.*;

import javax.swing.ProgressMonitorInputStream;

public class BoggleStats {

    ArrayList<Integer> myBoardScores, myLexiconScores;
   
    private static final int MIN_WORD = 3;
    private static final int NUM_TRIALS = 10;
    
    public BoggleStats(){
        myBoardScores = new ArrayList<Integer>();
        myLexiconScores = new ArrayList<Integer>();
    }
    
    public String wordTester(IAutoPlayer player, ILexicon lex, ArrayList<Integer> log, int count){
        
        BoggleBoardFactory.setRandom(new Random(12345));
        log.clear();
        double start = System.currentTimeMillis();
        
        for(int k=0; k < count; k++){
            BoggleBoard board = BoggleBoardFactory.getBoard(4);
            
            player.findAllValidWords(board, lex, MIN_WORD);
            log.add(player.getScore());           
        }
               
        double end = System.currentTimeMillis();
        int max = Collections.max(log);
        return String.format("%s %s\t count: %d\tmax: %d\ttime: %f", 
               player.getClass().getName(),
               lex.getClass().getName(),count,max,(end-start)/1000.0);
    }
    
    public void doTests(ILexicon lex){
        IAutoPlayer ap1 = new LexiconFirstAutoPlayer(lex);
        String result = wordTester(ap1,lex,myBoardScores,NUM_TRIALS);
        System.out.println(result);
        IAutoPlayer ap2 = new BoardFirstAutoPlayer(lex);
        String result2 = wordTester(ap2,lex,myLexiconScores, NUM_TRIALS);
        System.out.println(result2);
        for(int k=0; k < NUM_TRIALS; k++) {
            if (!myBoardScores.get(k).equals(myLexiconScores.get(k))){
                System.out.println(k+"\t"+myBoardScores.get(k)+"\t"+myLexiconScores.get(k));
            }
        }
    }
    
    public void runTests(ILexicon lex, ArrayList<String> list){
        lex.load(list);
        doTests(lex);
       
    }
    
    public static void main(String[] args){

        ILexicon lex = new SimpleLexicon();   
        
        
        
        InputStream is = lex.getClass().getResourceAsStream("/ospd3.txt");   
        ProgressMonitorInputStream pmis = StoppableReader.getMonitorableStream(is, "reading..."); 
        Scanner s = new Scanner(pmis);
        ArrayList<String> list = new ArrayList<String>();
        while (s.hasNext()){
            list.add(s.next().toLowerCase());
        }
      
        BoggleStats bs = new BoggleStats();
        bs.runTests(lex,list);
        lex = new TrieLexicon();
        bs.runTests(lex,list);
    }
}