a1 e a2 sono oggetti di tipo Integer e tra oggetti l'operatore == verifica se i due operandi puntano alla stessa locazione di memoria.

Nei casi < e > invece entra in gioco l'autounboxing.

Facendo a1.equals(a2) al posto di == dovresti risolvere.

Leggi qua per approfondire: http://stackoverflow.com/questions/9...lue-comparison