kimmgamjja

[Java] Exception>java.lang.NumberFormatException++Exception Message>For input string: "10000000000"++Stack Trace>java.lang.NumberFormatException: For input string: "10000000000" 본문

공부/Java

[Java] Exception>java.lang.NumberFormatException++Exception Message>For input string: "10000000000"++Stack Trace>java.lang.NumberFormatException: For input string: "10000000000"

인절미댕댕이 2025. 2. 14. 15:26
728x90

기존 자바 소스 

list = list.stream().sorted((o1, o2) -> Integer.valueOf(o1.get("NUMBER").toString()).compareTo(Integer.valueOf(o2.get("NUMBER").toString())) ).collect(Collectors.toList());

list 를 stream().sorted() 를 이용해 정렬해주려다가 

Exception>java.lang.NumberFormatException++Exception Message>For input string: "10000000000"++Stack Trace>java.lang.NumberFormatException: For input string: "10000000000"

 

이러한 에러가 발생했다

 

원인을 찾아보니 NumberFormatException 은 Integer.valueOf() 메서드처리할 수 있는 범위를 초과하는 숫자를 변환하려고 할 때 발생한다고 한다. 즉 변환하려는 숫자가 너무 커서다.

( Integer 타입은 -2,147,483,648부터 2,147,483,647까지의 범위를 가질 수있다

 

 

 그래서 Integer.valueOf() 메서드에서 Long.valueOf() 메서드로 바꿔주면 정상작동한다

list = list.stream().sorted((o1, o2) ->     
Long.valueOf(o1.get("NUMBER").toString()).compareTo(Long.valueOf(o2.get("NUMBER").toString())) ).collect(Collectors.toList());

 

728x90