int 형 데이터를 받는 배열을 Integer 타입의 List 로 어떻게 변환할 수 있을까?
이것을 배워두면, 배열에서 모든 Collection 타입의 자료구조로 변환하기가 쉽기 때문에 한번 공부겸 글을 작성해보려 한다.
문제를 예로 들어서 풀어보자
int 배열 arr1 과 arr2 가 있다. 두 배열에 공통적으로 들어가는 원소를 배열로 가지는 int 배열을 출력해라! -> 교집합 구하기 문제
전략 세우기
코드로 구현한 부분
import java.util.HashSet;
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr1, int[] arr2) {
Integer[] arr1_n = Arrays.stream(arr1).boxed().toArray(Integer[]::new);
Integer[] arr2_n = Arrays.stream(arr2).boxed().toArray(Integer[]::new);
HashSet<Integer> set1 = new HashSet<>(Arrays.asList(arr1_n));
HashSet<Integer> set2 = new HashSet<>(Arrays.asList(arr2_n));
set1.retainAll(set2);
int[] answer = Arrays.stream(set1.toArray(Integer[]::new)).mapToInt(i -> i).toArray();
return answer;
}
}
처음으로 Stream 을 써보았다. 매번 for 문으로 int to Integer, 반대로 하다가 stream을 쓰니깐 훨씬 편한 느낌이 들기도 한다.
스트림 공부를 해야겠다는 생각이 듬.
ps. 교집합 (retainAll), 차집합 (removeAll), 합집합 (addAll)