Salve ragazzi... per caso qualcuno mi saprebbe spiegare questo? .. io oramai sono davvero in panne... vi confesso ke questo problema proprio non lo so gestire...

codice:
public static void main(String[] arg){

     HashMap<Integer,Float> MAP2 =new HashMap<Integer,Float>(); 
     int dim= 67000; 

            for(int i=0;i<dim;i++){ 
                 int code = makeHash(i,i,dim); 
                 MAP2.put(code, 4.5f); 
             }

      int cont=0;
		
		for(int i=0;i<dim;i++){
			for(int j=0;j<dim;j++){

				int code = makeHash(i,j,dim);
				if(MAP2.containsKey(code))
				cont++;
			}
		}

		System.out.println(" fatto"+cont);

}

static int makeHash(int i, int j,int n){
		int code=(i*n)+j;
		return code;
	}
in sostanza effettuo dim=67000 inserimenti in un hashmap, e subito dopo, simulando che MAP sia una matrice quadrata, conto quanti valori non nulli contiene...
e .. attenzione attenzione...
il risultato è...

fatto 72792

questo "odioso" fenomeno non si presenta per valori minori di dim , ma peggiora per valori più alti !!!
come devo fare?