Java Stream은 Java 8 부터 추가된 컬렉션(Collection) 데이터를 처리하고 변환하는 기능을 제공하는 API
두 int[] 배열의 교집합 구하기
int[] arr1 = {1, 2, 3, 4, 5}; // 예시 정수형 배열1
int[] arr2 = {4, 5, 6, 7, 8}; // 예시 정수형 배열2
Set<Integer> set1 = Arrays.stream(arr1).boxed().collect(Collectors.toSet());
Set<Integer> intersectionSet = Arrays.stream(arr2)
.filter(set1::contains)
.boxed()
.collect(Collectors.toSet());
int[] intersection = intersectionSet.stream().mapToInt(Integer::intValue).toArray();
System.out.println(Arrays.toString(intersection)); // [4, 5]
배열들을 중복되지 않는 요소만을 갖는 Set 컬렉션으로 변환한 뒤
.filter(set1::contains) 를 통해 두 배열간 중복되는 값을 구한다.
두 int[] 배열의 합집합 구하기
int[] arr1 = {1, 2, 3, 4, 5}; // 예시 정수형 배열1
int[] arr2 = {4, 5, 6, 7, 8}; // 예시 정수형 배열2
int[] union = IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2))
.distinct()
.toArray();
System.out.println(Arrays.toString(union)); // [1, 2, 3, 4, 5, 6, 7, 8]
IntStream.concat()를 통해 두 int[] 배열을 하나로 합치고
.distinct() 를 사용하여 중복된 요소를 제거한뒤 (중복되는 값을 제거하지 않고 각 요소들을 있는 그대로 합치려면 .distinct() 를 빼면 됨)
.toArray() 를 통해 int[]로 변환한다.
두 int[] 배열의 차집합 구하기
int[] arr1 = {1, 2, 3, 4, 5}; // 예시 정수형 배열1
int[] arr2 = {4, 5, 6, 7, 8}; // 예시 정수형 배열2
int[] difference = Arrays.stream(arr1)
.filter(x -> Arrays.stream(arr2).noneMatch(y -> y == x))
.toArray();
System.out.println(Arrays.toString(difference)); // [1, 2, 3]
각 배열들을 Arrays.stream() 로 스트림으로 변환한 뒤
.filter() 와 noneMatch( )를 통해서 arr1의 요소중 arr2의 요소와
일치하지 않는 요소들을 구한 뒤
.toArray() 를 통해 int[]로 변환한다.
'Java' 카테고리의 다른 글
JSON 형식 문자열 Java List<String, Object> 로 변환, JSON 문자열 파싱 (0) | 2023.04.30 |
---|---|
자바 스트림 Java Stream List<Integer> 합계,평균,최댓값,최솟값 구하기 (0) | 2023.04.16 |
자바 스트림 Java Stream 배열을 리스트로 변환, "1,2,3,4,5..." 문자열을 배열로 변환 (0) | 2023.04.01 |
JDK 와 JRE의 차이 (0) | 2022.05.18 |
Java toString() 메서드 (0) | 2022.03.23 |
최근댓글