private List<Result> ComputeAdvance(String movieId)
    {
    	System.out.println("ComputeAdvance");
    	ArrayList<Result> a = new ArrayList<Result>();
    	for(String movieY : _mapMovies.keySet())
    	{
    		if(movieY.equals(movieId) == false) 
    		{
    			Movie y = _mapMovies.get(movieY);
    			Map<String,User> users = y.get_mapUsers();
    			int xCountSum = 0;
    			int xNotCountSum = 0;
    			for(String userId : users.keySet()){
    				if(GetXandY(movieId, movieY, userId)) xCountSum ++;
    				if( GetNotXandY(movieId, movieY, userId)) xNotCountSum++;
    			}

    			try
    			{
    				int rn = GetRatingNumber(movieId);
    				int nrn = GetNotRatingNumber(movieId);
    				
    				float score = (float)xCountSum / rn;
    				float scoreNot = (float)xNotCountSum/ nrn;
    				score = score / scoreNot;
    				if(score != Float.POSITIVE_INFINITY && score != Float.NEGATIVE_INFINITY){
    				Result r = new Result(movieY, score);
    				a.add(r);
    				}
    				else
    				{
    					System.out.println("infinity for " + movieId + " " + movieY);
    				}
    
    			}
    			catch(Exception ex)
    			{
    			}
    		}
    	}
   
    	
    	Collections.sort(a, new ResultComparator());
    	return a;
    }