import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class HashTest {

	static Random r = new Random();

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//Student s = new Student();
		//s.name = "Bill";
		//s.classes.add("EEL5708");
		//s.classes.add("EEL4851");
		//Student s = createRandomStudent();
		//System.out.println(s);
		
		List<Student> studentList = new ArrayList<Student>();		
		initialize(1000, studentList);
		Set<Student> hashSet = new HashSet<Student>();
		Set<Student> treeSet = new TreeSet<Student>();

		Student s1 = new Student();
		s1.name = "Britney";
		s1.classes.add("4851");

		Student s2 = new Student();
		s2.name = "Britney";
		s2.classes.add("6938");

		treeSet.add(s1);
		hashSet.add(s1);
		System.out.println("TreeSet contains s2:"  + treeSet.contains(s2));
		System.out.println("HashSet contains s2:"  + hashSet.contains(s2));
		long start = System.currentTimeMillis();
		
		/*
	    ArrayList<Student> arrayList = new ArrayList<Student>();
		for(Student s: studentList) {
			hashSet.add(s);
			//arrayList.add(s);
			//treeSet.add(s);		
		}
		long start = System.currentTimeMillis();
		int count = 0;
		for(Student s: studentList) {
			if (hashSet.contains(s)) {
				count++;
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("Computation took:" + (end-start));
		System.out.println("Found: " + count);
		*/
	}

	public static void initialize(int count, List<Student> studentList) {
		for(int i=0; i!=count; i++) {
		   Student s = createRandomStudent();
		   studentList.add(s);
		}		
	}
	
	public static Student createRandomStudent() {
		Student s = new Student();
		String name = ""; 
		int namesize = 1+ r.nextInt(10);
		for(int i = 0; i != namesize; i++) {
			char c = (char)('a' + r.nextInt(26));
			name = name + c;
			if (i == 0) {
				name = name.toUpperCase();
			}
		}
		s.name = name;
		int classessize = 1+ r.nextInt(5);
		for(int i = 0; i!= classessize; i++) {
			String classname = "EEL" + r.nextInt(9999);
			s.classes.add(classname);
		}
		//System.out.println(s);
		return s;
	}
	
}

