오늘은 String값이 저장되어있는 배열을 Long, Integer등의 자료형으로 변경하는 방법에 대해서 정리하려고 한다.
알고리즘 문제를 풀 때 split을 자주 사용한다면 한번쯤은 고민해봤을 문제일 것 같다.
코드로 살펴보면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import java.io.*; import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String[] value = reader.readLine().split(" "); // input 5 10 20 30 40 int[] numbers = {}; // 보통 쉽게 떠올리는 반복문을 이용한 방법 for(int i = 0; i < value.length; i++) { numbers[i] = Integer.parseInt(value[i]); } /** * Stream을 이용하는 방법 속도는 for문에 비해 느림 */ double[] doubleArr = Arrays.stream(value).mapToDouble(a -> Double.valueOf(a)).toArray(); // StringArray -> doubleArray //maptoInt의 람다식 부분은 ::(더블콜론을 이용해 아래와 같이 사용할 수 있음) 즉 : a -> Integer.parseInt(a) = Integer::parseInt numbers = Arrays.asList(value).stream().mapToInt(Integer::parseInt).toArray(); // StringArray -> intArray } } | cs |
위 코드에서 사용된 Stream은 Java 8버전 부터 추가된 개념인데, java에서 함수형 프로그래밍을 가능하게 하는 기능이다. 상당히 중요한 개념이라서 java개발자라면 꼭 알아야 할 개념이긴 한데, 여기서는 그냥 Stream이라는 공간을 만들어서 그 안에서 자료형을 변경해주었다고 생각하면 편할 것 같다.
2020년도 오늘을 기점으로 끝난다. 코로나때문인지 모르겠지만 시간이 참 빠르게 흘러갔다.
올해 목표로 블로그에 글을 40개 이상은 쓰겠다는 목표를 세웠었는데, 어느정도 지켜진 것 같아 기분은 좋다.
마지막으로 내년에는 좋은일만 가득했으면 좋겠고, 더욱 더 실력을 증진시켜서 좋은 개발자가 될 수 있으면 좋겠다.
'JAVA' 카테고리의 다른 글
Eescape된 HTML 태그를 JAVA에서 Unescape (2) | 2021.03.03 |
---|---|
Stream.filter()을 이용해 하나의 원소만 리턴받기 (0) | 2021.01.26 |
JAVA System.in에서의 EOF(End of File) 컨트롤 (0) | 2020.12.23 |
JAVA 입력과 출력(Scanner, BufferedReader..) (0) | 2020.12.17 |
JAVA에서 리스트안의 원소를 중복제거하는 방법? (0) | 2020.11.04 |