JAVA

String 배열을 다른자료형 배열로 변경하는 방법

Ambitions 2020. 12. 31. 11:30

오늘은 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개 이상은 쓰겠다는 목표를 세웠었는데, 어느정도 지켜진 것 같아 기분은 좋다.

마지막으로 내년에는 좋은일만 가득했으면 좋겠고, 더욱 더 실력을 증진시켜서 좋은 개발자가 될 수 있으면 좋겠다.