본문 바로가기
Language/Java

자바 List 중복 제거방법

by wakestand 2020. 12. 7.
반응형

자바에서 list의 중복을 제거하는 방법은

Set을 이용한 방법과 Stream을 이용한 방법

두 가지가 있는데 차례대로 알아보자

 

먼저 set을 이용한 방법은

set에 중복 값이 담기지 않는다는 것을 활용해

 

set.addAll(리스트명)으로

set에 list 값을 모두 넣어주고

리스트명.clear()로 기존 값을 모두 버린 뒤

set.addAll(리스트명) 으로

list에 중복이 제거된 값을 넣어주면 된다

 

Stream을 사용하는 경우는 더 간단한데

list명.stream() 으로 스트림을 생성한 뒤

.distinct() 로 중복을 제거하고

.collect(Collector.toList()) 로

list 형태로 뽑아내면 끝이 난다

 

스트림이 어려워 보이지만

결국 메소드만 계속 붙이면서 뽑아내는 형태기 때문에

스트림을 사용하면 대부분의 반복 노가다를

1줄로 끝낼 수 있다

 

자바 스트림(Stream) 예제부터 사용법까지 정리

자바에서 스트림이라고 하면 대부분 엄청나게 어려운 기술인 줄 알고 시작도 전에 포기하는 경우가 많은데 스트림은 엄청 간단하고 유용한 기술이다 다만 설명하는 사람들이 쉬운 걸 너무 어렵

wakestand.tistory.com

마지막으로 예제에 사용한 코드는 아래와 같다

 

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()));
}
반응형

댓글