[Java] HashSet

Soo·2023년 11월 3일
post-thumbnail

Set이란?

Set 인터페이스 구현 클래스
1. 객체를 중복해서 저장할 수 없으며, 하나의 null 값만 저장할 수 있다.
2. 중복을 자동으로 제거해준다.

Set은 일반적으로 비선형 구조이기 때문에 '순서'의 개념이나 '인덱스'가 존재하지 않아 값을 추가/삭제할 경우 Set 내부에 해당 값을 검색해 해당 기능을 수행해야만 한다.
이로 인해 처리 속도가 List구조에 느리다는 것이 단점이다.

그렇다면 HashSet은 무엇일까?

💡 HashSet

  • Set 인터페이스에서 지원하는 구현 클래스이다.
  • 'Set의 성질을 그대로 상속' 받는다.

HashSet의 성질

  1. HashSet은 중복된 값을 허용하지 않는다.
  • 값의 존재 유무를 파악할 때 주로 사용
  1. List 등과는 다르게 저장한 순서가 보장되지 않는다.
  • 저장 순서를 유지해야한다면, JDK 1.4부터 제공되는 클래스 LinkedHashSet을 사용해야 함
  1. null을 값으로 허용한다.

HashSet의 구현

HashSet 내부 코드를 보면 HashMap을 사용하여 구현되어 있는 것을 볼 수 있다.

  1. HashSet 생성
    다양한 방법으로 Hash생성 가능-아래 코드 참고

  1. HashSet 요소 값 추가
    생성된 Hash에 add()메소드를 호출해 값 추가 가능

만약 입력되는 값이

HashSet 내부에 존재하지 않는다면 그 값을 HashSet에 추가하고 true 를 반환한다.
HashSet 내부에 존재한다면 false를 반환한다.

profile
Soogineer's Devlog

0개의 댓글