2013-01-05 13 views
7

Mam dziwny scenariusz, w którym muszę przekonwertować kilka milionów java.lang.Long s na pierwotne typy int. Muszę to robić kilka razy dziennie, każdego dnia. Normalnie nie martwiłbym się o tego rodzaju prostą obsadę, ale ponieważ dzieje się tak często, tak często, muszę zapytać: jaki jest najskuteczniejszy sposób, aby to zrobić i dlaczego?Najbardziej efektywny sposób konwersji java.lang.Long na prymitywne int

Moja pierwsza próba:

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

Choć wydaje się to dzieje 3 boki wokół stodoły. Z góry dziękuję.

+1

UWAGA: Wartość 'Long' może nie pasować do' int' – MrSmith42

+3

Wystarczy użyć 'intValue()' i rozpoznać, że stracisz dane, chyba że twoje długie są ograniczone. –

+0

Nie konwertuj 'Long' na' String' i nie parsuj go, aby uzyskać 'int'. – MrSmith42

Odpowiedz

23

Klasa Long ma metodę .intValue(), myślę, że to jest to, czego szukasz ...

(uwaga, może spowodować utratę precyzji itp itd - ale zapewne wiesz, że już)

9

Spróbuj

int x = myLong.intValue(); 
+0

Otrzymuję błąd: Nie można wywołać funkcji intValue() na typie pierwotnym długo – Anand

+1

@Anand. 'myLong' musi być zadeklarowane jako' Long' not' long'. W przypadku tego ostatniego przypadku wystarczy go rzucić, tj. '(Int) myPrimitiveLong'. –

Powiązane problemy