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[]로 변환한다.

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기