JAVA 리스트 배열 중복 삭제 Stream 사용 방법

배열에 있는 중복값을 삭제하는 방법을 알아보겠습니다.

중복을 삭제하는 방법으로 Stream,distinct을 사용하겠습니다.

distinct의 샘플을 보면서 사용 방법을 확인해보겠습니다.

 

중복 삭제 샘플

리스트의 중복 삭제는 distinct하고나서 collect 하는 것으로 가능합니다.

import java.util.List;
import java.util.Arrays;
import java.util.stream.Collectors;

public class collectionTest{
  public static void main(String args[]){
  
   // 값이 중복 있도록 1을 2개 설정
   List<Integer> list = Arrays.asList(1, 1, 2, 3, 4, 5);

   //distinct().collect를 사용하여
   // 결과 [1, 2, 3, 4, 5]
   List<Integer> ans = list.stream().distinct().collect(Collectors.toList());
  
   System.out.println(ans);
  }
}

 

결과

[1, 2, 3, 4, 5]

 

리스트를 초기화 할때 값 1을 중복으로 대입했습니다.

그리고 리스트 결과를 출력하기 전에 distinct을 사용해 중복 값을 삭제하도록 했습니다.

출력된 결과를 보면 1이 하나만 출력된 것을 확인 할 수 있습니다.

 

중복값을 제거하지 않고 존재하는지 체크하는 방법을 간단하게 살펴 보겠습니다.

중복 체크 확인 샘플

중복 하는 값이 있는지 체크만 하는 경우에는 다음과 같이 사용할 수 있습니다.

import java.util.List;
import java.util.Arrays;
import java.util.HashSet;
import java.util.stream.Collectors;

public class collectionTest{
  public static void main(String args[]){
  
   //값이 중복 있도록 1을 2개 설정
   List<Integer> list = Arrays.asList(1, 1, 2, 3, 4, 5);

   //중복 체크
   //결과를 변수 ans에 반환
   boolean ans = (list.size() == new HashSet<>(list).size());  
   
   System.out.println(ans);
  }
}

 

결과

false
[1, 1, 2, 3, 4, 5]

 

결과값으로 false가 반환되었습니다.

리스트에 중복값이 존재하면 false를 반환합니다.

중복값이 없으면은 true를 반환합니다.

중복값을 삭제하는 처리는 없기 때문에 리스트에 값은 그대로 존재합니다.

댓글