private static void calculateUsersTopTenMatches(HashMap<Integer, User> userMap) {
		/*
		 * Note: Currently this function is hovering at a runtime of O(N^2).  All possible combinations of users are computed, with no cashing, i.e.
		 * user 1's potential relationship with user 2 is calculated, and later user 2's potential relationship with user 1 is calculated.
		 * This is one potential avenue of optimization that instantly pops into mind; however there are others methodologies as well, I am sure.
		 * This code should be viewed as an initial system functionality prototype.  If this were a production product, the next step would be 
		 * much more through testing and optimization code reviews.
		 */
		
		//Iterate through all users, and calculate their top 10 matches
		Iterator<Integer> i = userMap.keySet().iterator();
		while(i.hasNext()){
			User focusUser = userMap.get(i.next());
			LinkedList<Double[]> topTenList = new LinkedList<Double[]>();
			
			//Init topTenList to allow future operations
			Double[] init = {-1.0,-1.0};
			for(int x = 0; x <10; x ++){
				topTenList.add(init);
			}
			
			Iterator<Integer> i2 = userMap.keySet().iterator();
			while(i2.hasNext()){
			
				//Dont try to match yourself to yourself -- no vain people allowed!
				if(i.equals(i2)) continue;
				
				User targetUser = userMap.get(i2.next());
				
				//Note: This duple "Double[]" has userId at index [0] and % match with target at index [1]
				//Find the correct location for this result, and add it into the list of top ten
				double result = calculateTotalMatchPotential(focusUser, targetUser);
				for(int x=0; x<10; x++){
					Double[] idMatchPercentInQuestion = {(double)targetUser.getId(), result};
					Double[] idMatchPercentInList = topTenList.get(x);
					if(result > idMatchPercentInList[1])
					{
						topTenList.add(x, idMatchPercentInQuestion);
						break;
					}
				}
				
				//We only care about the top ten, so maintain the list length at 10.
				if(topTenList.size() > 10){
					topTenList.subList(10, topTenList.size()).clear();
				}
				
			}
			
			System.out.println("------------Top ten list for " + focusUser.getId() + "----------");
			int tempCount = 1;
			for(Double[] a : topTenList)
			{
				System.out.println("Match #" + tempCount++ + ": " + "User #" + a[0].intValue() + " at %" + a[1] *100);
			}
			
			packUpResultsIntoJson(topTenList, focusUser.getId());
		}
	}