Java Collection - 세트(Set)

Java 에서 제공하는 자료 구조 중 Set 데이터를 저장하고 관리하는 것이 있다.

Set과 유사한 기존의 List 먼저 살펴보자


List

+---+---+---+---+---+
| 1 | 2 | 3 | 3 | 3 |
+---+---+---+---+---+
[0] [1] [2] [3] [4]
  • 리스트는 연속된 요소들의 컬렉션이다. 각 요소는 특정 순서에 따라 요소가 담겨 있고 같은 요소가 연속으로 나타날 수 있다.

리스트 특징

  • 순서 유지: 리스트는 추가한 요소에 대해 특정 순서를 유지하고 있다.
  • 중복 허용: 리스트는 동일한 값의 요소나 객체의 중복을 허용하여 저장한다.
  • 인덱스 접근: 추가한 요소로 접근하려면 초기 0번 인덱스로 통해 요소를 접근할 수 있다.

Set

+-----------+
| 1 & 2 & 3 | <- Imposible Add Input Data 3. This is Duplication
+-----------+

세트(Set)는 유일한 요소들만 있는 컬렉션이다.

Set 특징

  • 유일성: 셋에는 중복된 요소가 존재할 수 없다. 요소 추가 시 이미 있는 경우 무시한다.
  • 순서 미보장: 셋 구현에서는 요소들의 순서를 보장하지 않는다. 인덱스를 통한 요소 출력 시 요소를 보장할 수 없다.
  • 빠른 검색: 셋은 요소의 유무를 빠르게 확인할 수 있도록 최적화 되어있다. 데이터 중복을 방지해 빠른 조회가 가능케 한다.

Set의 용도는 주로 중복을 허용하지 않고 요소의 유무로 많이 사용한다.


활용 예시

  • 리스트: 장바구니 목록, 순서가 있는 일련의 이벤트
  • Set: 회원 ID 항목 테이블, 고유한 항목 항목의 테이블