import javax.swing.*; import java.io.*; import java.util.*; public class JitenSet100m05{ public static LinkedList getDic( String fname ) { LinkedList dic = new LinkedList(); int ct = 0; try { FileReader in = new FileReader(fname); BufferedReader inb = new BufferedReader(in); String line; while ((line = inb.readLine()) != null) { dic.add(line); } inb.close(); in.close(); } catch (IOException e) { System.err.println( fname + " がないのでは?" ); System.err.println( e); } finally { // inb.close(); // in.close(); } return dic; } public static String wordSearch( String[] words,String[] imis,int ct,String word ) { int i,j,m; i = 0; j = ct-1; m = 0; while ( j >= i ){ m = (i+j)/2; //String format = "i=%2d | j=%2d | m=%2d | word[m]=%3s\n"; //System.out.printf(format,i,j,m,word[m]); if ( words[m].equals(word) ){ //System.out.println( "発見 word["+m+"] です。意味は「"+imi[m]+"」です。" ); //atta=true; break; } else if (words[m].compareTo(word)>0) { j=m-1; } else { i=m+1; } }//whileの終わり return imis[m]; } public static void main( String[] args ) { String fname = "ejdic2k.txt"; LinkedList diclist = getDic(fname); LinkedList wordslist = new LinkedList(); String[] words = new String[2010]; String[] imis = new String[2010]; int ct = 0; for( String line : diclist ){ String[] ndata = line.split("\t"); words[ct]=ndata[0]; imis[ct]=ndata[1]; ct++; wordslist.add(ndata[0]); } System.out.println(ct); System.out.println(wordslist.size()); int made=100000; int itv1=100; int itv2=1000; int kai=-itv1; long time0 = System.currentTimeMillis(); long timep = time0; long timei; while( made>kai){ for( String word : wordslist ){ String imi = wordSearch(words,imis,ct,word); //if (word.equals("yet") && kai%(made/10)==0){ // System.out.println(System.currentTimeMillis()-time0); //} //System.out.println(imi); } kai++; if (kai==1) time0 = System.currentTimeMillis(); if (kai%(itv1)==0){ timei=System.currentTimeMillis(); System.out.print((timei-timep)+" "); timep = timei; } if (kai%(itv2)==0) System.out.printf("\n%8d:",kai); } long time1 = System.currentTimeMillis(); System.out.println( (time1-time0) + "msec" ); }//mainの終わり }//classの終わり