반응형
자바에서 list의 중복을 제거하는 방법은
Set을 이용한 방법과 Stream을 이용한 방법
두 가지가 있는데 차례대로 알아보자
먼저 set을 이용한 방법은
set에 중복 값이 담기지 않는다는 것을 활용해
set.addAll(리스트명)으로
set에 list 값을 모두 넣어주고
리스트명.clear()로 기존 값을 모두 버린 뒤
set.addAll(리스트명) 으로
list에 중복이 제거된 값을 넣어주면 된다
Stream을 사용하는 경우는 더 간단한데
list명.stream() 으로 스트림을 생성한 뒤
.distinct() 로 중복을 제거하고
.collect(Collector.toList()) 로
list 형태로 뽑아내면 끝이 난다
스트림이 어려워 보이지만
결국 메소드만 계속 붙이면서 뽑아내는 형태기 때문에
스트림을 사용하면 대부분의 반복 노가다를
1줄로 끝낼 수 있다
마지막으로 예제에 사용한 코드는 아래와 같다
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
list.add(2);
list.add(4);
HashSet<Integer> set = new HashSet<>(); // set은 중복 비허용
set.addAll(list); // 리스트의 내용을 모두 set에 담음
list.clear(); // 리스트 안의 내용 전부 버림
list.addAll(set); // list에 set의 내용을 버림
// 일반적인 방법
System.out.println("set을 사용한 방법 : " + list);
// Stream을 사용한 방법
// list.stream 으로 스트림 생성
// .distinct() 로 중복 제거
// .collect(Collectors.toList()) 로 list 형태로 반환
System.out.println("Stream을 사용한 방법 : " + list.stream().distinct().collect(Collectors.toList()));
}
반응형
'Language > Java' 카테고리의 다른 글
자바 char 배열을 stream으로 변환방법 (0) | 2020.12.09 |
---|---|
자바 배열 최대값 최소값 구하는 방법 (1) | 2020.12.07 |
자바 int를 String으로, String을 int로 변경방법 (0) | 2020.12.07 |
자바 int 배열 Integer 배열로 변경방법 (0) | 2020.12.07 |
자바 스트림(Stream) 예제부터 사용법까지 정리 (5) | 2020.12.06 |
댓글