2013-01-05 20 views
7

Ho uno strano scenario in cui ho bisogno di convertire diversi milioni di java.lang.Long s nei tipi primitivi int. Ho bisogno di farlo più volte al giorno, ogni singolo giorno. Normalmente, non mi preoccuperei di questo tipo di casting semplice, ma dal momento che sta accadendo così tanto, così spesso, devo chiedere: qual è il modo più efficace per farlo, e perché?Il modo più efficiente per convertire java.lang.Long in primitive int

Il mio primo tentativo:

Long myLong = getLong(); 
int x = Integer.valueOf(myLong.toString()) 

Anche se questo sembra come andare 3 lati intorno alla stalla. Grazie in anticipo.

+1

ATTENZIONE: Valore di 'Long' potrebbe non rientrare in un' int' – MrSmith42

+3

Basta usare 'intValue()' e riconoscere che perderai i dati a meno che i tuoi long non siano ristretti. –

+0

Non converti 'Long' in' String' e lo analizzi per ottenere un 'int'. – MrSmith42

risposta

23

La classe Long ha un metodo .intValue(), credo che questo è quello che stai cercando ...

(attenzione, si può perdere di precisione ecc ecc - ma si probabilmente sapete che già)

9

Prova questa

int x = myLong.intValue(); 
+0

Viene visualizzato l'errore: Impossibile richiamare intValue() sul tipo primitivo lungo – Anand

+1

@Anand. 'myLong' deve essere dichiarato come' Long' non 'long'. Per quest'ultimo caso, basta lanciarlo, cioè '(int) myPrimitiveLong'. –

-2

Prova questa

Integer i = (int) (long) b; 
Problemi correlati