ハッシュ法(HashSet クラスの利用)

/************************************/
/* ハッシュ法(HashSet クラスの利用) */
/*      coded by Y.Suganuma         */
/************************************/
import java.io.*;
import java.util.*;

/****************/
/* main program */
/****************/
public class Test
{
	public static void main (String[] args) throws IOException
	{
		int i1, k, n = 0, ct = 0;
		boolean sw;
		String st, s[] = new String [100000];
		HashSet <String> H = new HashSet <String> (2000000);
		long tm1, tm2, tm3;
		Random rn = new Random((long)12345);

		System.out.printf("ハッシュ法(HashSet クラス)\n");

		tm1 = System.currentTimeMillis();
		while (ct < 2000000) {
			k  = rn.nextInt();
			st = Integer.toString(k);
			sw = H.add(st);
			if (sw) {
				ct++;
				if (n < 100000) {
					s[n] = st;
					n++;
				}
			}
		}
		tm2 = System.currentTimeMillis();
		System.out.printf("   保存: %d ms\n", tm2-tm1);
		for (i1 = 0; i1 < n; i1++)
			H.contains(s[i1]);
		tm3 = System.currentTimeMillis();
		System.out.printf("   探索: %d ms\n", tm3-tm2);
		System.out.printf("   データ数: %d\n", ct);
	}
}
		

  このプログラムを実行すると以下のような出力が得られます.
ハッシュ法(HashSet クラス)
  保存: 1899 ms
  探索: 11 ms
  データ数: 2000000