자바에서 int 배열을 Integer 배열로 바꾸거나
반대로 Integer 배열을 int 배열로 바꾸는 경우에
간단하게는 for 문을 돌려가며 사용하면 되는데
int 배열을 Integer 배열로 옮긴다 치면
Integer 배열은 크기를 int 배열의 length로 주고
for로 값을 하나씩 넣어주면 된다
다른 방법으로는 Stream을 사용하는 방법이 있는데
뭔가 굉장히 어려워 보이지만
결국 메소드만 계속 붙이는 형태기 때문에
메소드가 뭘 수행하는지만 이해한다면
for문보다 더 빠르게 만들 수 있다
Arrays.stream(배열명)
으로 배열을 스트림 형태로 변경한 뒤
int 배열이라면 메소드 사용을 위해
.boxed()를 붙여주고(Integer일 경우 안붙임)
.toArray(Integer[]:new);
로 Integer 형태로 반환하면 된다
여기서 Long, Double 타입의 배열로 반환하고 싶다면
Integer[] 부분만 Long[], Double[]로 바꿔주면 끝이다
어려워 보이지만
스트림 형태로 변경하고 메소드 두개만 붙이면 끝인거다
반대로 Integer[]를 int[]로 옮겨올 경우에는
.mapToInt(i->i) 로 Integer 값을 int로 바꿔준 뒤
toArray()로 int 배열로 뽑아내면 끝인데
i->i 는 람다(Lambda)식이기 때문에 뭐지 싶을거다
근데 람다도 그냥 파라미터 -> 코드 형태이기 때문에
결코 어렵지가 않다
하지만 스트림을 사용한 방법은 뭔가 어려워 보여서
대부분 for를 돌려서 사용하게 될 텐데
스트림과 람다는
한번 슥 보면 정말 간단한 개념이기 때문에
이걸 안쓰고 for 돌려가면서 쓰면
1분이면 만들거 몇십분 붙들고 있는거다
스트림과 람다는 아래 글에서 정리해 놨기 때문에
그걸 보고 사용해주면 되겠다
마지막으로 예제에 사용한 코드는 아래와 같다
public static void main(String[] args) {
// int, Integer 배열 선언
int[] arr = {1,2,3,4};
Integer[] arr2 = new Integer[arr.length];
// for를 이용한 방법
// 반대의 경우에는 순서만 바꿔준다
for(int i = 0; i<arr.length; i++) {
arr2[i] = arr[i];
System.out.println("Integer[] 확인 : " + arr2[i]);
}
// Stream을 이용한 방법
Integer[] arr3 = Arrays.stream(arr).boxed().toArray(Integer[]::new);
// 확인을 위해 .collect를 사용해 리스트로 변환
System.out.println(Arrays.stream(arr3).collect(Collectors.toList()));
// Integer 배열을 Int 배열로
int[] arr4 = Arrays.stream(arr3).mapToInt(i->i).toArray();
}
'Language > Java' 카테고리의 다른 글
자바 List 중복 제거방법 (0) | 2020.12.07 |
---|---|
자바 int를 String으로, String을 int로 변경방법 (0) | 2020.12.07 |
자바 스트림(Stream) 예제부터 사용법까지 정리 (5) | 2020.12.06 |
자바 람다(Lambda) 기초부터 사용방법 정리 (1) | 2020.12.06 |
자바 Pattern을 이용해 오라클 IN 처럼 사용방법 (0) | 2020.12.04 |
댓글