본문 바로가기
Language/Java

자바 int 배열 Integer 배열로 변경방법

by wakestand 2020. 12. 7.
반응형

자바에서 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분이면 만들거 몇십분 붙들고 있는거다

스트림과 람다는 아래 글에서 정리해 놨기 때문에

그걸 보고 사용해주면 되겠다

 

자바 스트림(Stream) 예제부터 사용법까지 정리

자바에서 스트림이라고 하면 대부분 엄청나게 어려운 기술인 줄 알고 시작도 전에 포기하는 경우가 많은데 스트림은 엄청 간단하고 유용한 기술이다 다만 설명하는 사람들이 쉬운 걸 너무 어렵

wakestand.tistory.com

 

 

자바 람다(Lambda) 기초부터 사용방법 정리

자바에서 람다(Lambda)는 기존의 클래스에 메소드를 만들고 객체화 한 뒤에 끌어쓰는 방식이 아니라 그때 바로 만들어서 사용하는 식인데 위 예제를 보면 인터페이스를 통해 메소드를 만들 수 있

wakestand.tistory.com

마지막으로 예제에 사용한 코드는 아래와 같다

 

	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();
	}
반응형

댓글