¿Por qué el compilador de Java no le gusta primitivo int como tipo de valores en HashMap?

El compilador se queja de este código:

    HashMap<String,int> userName2ind = new HashMap<String,int>();
    for (int i=0; i<=players.length; i++) {
        userName2ind.put(orderedUserNames[i],i+1);
    }

Escribe "tipo inesperado" y apunta aint. Si reemplazoint porString yi+1 pori+"1", la compilación va bien. ¿Qué tiene de malo aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta