Home HashSet
Post
Cancel

HashSet

HashSet 이란?

  • HashSet은 Set의 파생클래스로 Set 인터페이스에서 지원하는 구현 클래스이다.

내용 특징

  1. 중복된 원소를 허용하지 않는다.
    • 중복을 걸러내는 과정
      • HashSet은 객체를 저장하기 전에 먼저 객체의 hashCode()메소드를 호출해서 해시 코드를 얻어낸 다음 저장되어 있는 객체들의 해시 코드와 비교한 뒤 같은 해시 코드가 있다면 다시 equals() 메소드로 두 객체를 비교해서 true가 나오면 동일한 객체로 판단하고 중복 저장을 하지 않습니다.
      • 문자열을 HashSet에 저장할 경우, 같은 문자열을 갖는 String객체는 동일한 객체로 간주되고 다른 문자열을 갖는 String객체는 다른 객체로 간주되는데, 그 이유는 String클래스가 hashCode()와 equals() 메소드를 재정의해서 같은 문자열일 경우 hashCode()의 리턴 값을 같게, equals()의 리턴 값은 true가 나오도록 했기 때문입니다.
      • HashSet<Word> set = new HashSet<>(); 이런식으로 어떤 클래스를 원소로 HashSet을 생성하는 경우에는 항상 다른 객체로 간주되므로 인스턴스 변수의 값이 중복될 수 있다.
  2. 순서를 고려하지 않는다.
  3. null 요소를 허용한다.
  4. 내부적으로 HashMap을 사용하여 데이터를 저장한다.

실제 사용

1
2
3
4
5
Set<String> fruits = new HashSet<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("kiwi");
System.out.println("fruits: " + fruits);

참고 사이트

This post is licensed under CC BY 4.0 by the author.