꾸물꾸물 졔의 개발공부

[JAVA] HashSet 개념 및 사용법 본문

JAVA

[JAVA] HashSet 개념 및 사용법

체제 2022. 11. 26. 19:53

HashSet 이란 ? 


자바에서 HashSet 은 Set 인터페이스를 구현한 클래스이다.

 

HashSet의 주요특징은 다음과 같다. 

  • 중복값 허용 되지 않음
  • 입력순서가 일정하게 보장되지 않음. 즉, 정렬이 되지 않음 
    • '순서'가 존재하지 않기 때문에 특정 값을 가져오는 index를 사용할 수 없다. 
  • null 값도 하나의 값으로 허용 

값의 추가나 삭제가 많은 알고리즘을 구현할 때에는 HashSet 이 적합하지 않을 수도 있다.

index 개념이 없고 중복값을 허용하지 않기 때문에, 특정 값을 추가할 때 HashSet내에서 해당값의 존재여부를 확인하고 추가해야하고, 삭제를 위해서도 모든 값을 탐색해야한다. 

 

 

 

 

HashSet 의 중복제거


객체의 hashCode() 메서드로 중복을 걸러낸다.

 

  1. 객체를 저장하기 전에 해당 객체의 hashCode()를 호출하여 해시코드를 얻어낸다.
  2. 저장되어 있는 객체들의 해시코드 중 같은 것이 있는지 확인한다.
  3. 같은 해시코드의 값이 있다면, equals() 메서드로 두 객체의 동일성을 확인한다.
  4. equals() 결과가 true 라면, 같은 값으로 판단하여 중복 저장을 하지 않는다.
  5. 그렇지 않다면 저장한다. 

 

 

 

 

HashSet 사용법


 1. HashSet 선언 

HashSet<Integer> hashSet= new HashSet<>();

HashSet <데이터타입> 변수명 = new HashMap<데이터타입>(); 

- 데이터타입 ex) Integer, String, Character 등 

 

HashSet<Integer> hashSet= new HashSet<>(20);

다음과 같이 괄호내에 초기 용량을 정해줄 수 있다. ( default 값은 16 )

만약, 용량을 초과하더라도 hashSet이 자연스럽게 용량을 늘려준다. 

 

 

 

 2. 값 추가 

hashSet.add(10);

add() 메서드를 사용. 처음 선언할 때의 데이터타입과 맞는 데이터를 추가한다. 

 

 

 

 3. 값 삭제 

  • 특정 값만 삭제 
hashSet.remove(10);

remove() 메서드를 사용해서 삭제하고자 하는 값을 명시해준다.

 

  • 모든 값 삭제 
hashSet.clear();

clear() 메서드를 사용하면, hashSet 내의 모든 값이 삭제된다. 

 

 

 

 4. hashSet의 크기 

hashSet.size()

size() 메서드를 사용하면, hashSet 의 크기를 int 형으로 반환해준다.

 

 

 

 5. 값 포함여부 확인 

hashSet.contains(value);

contains() 메서드를 사용하면 특정값이 hashSet 내에 존재하는지/존재하지 않는지를 확인할 수 있다.

true-false 값으로 반환해준다.

 

 

 

 6. 데이터 출력하기 

Iterator iterator = hashSet.iterator(); 

while(iterator.hasNext()) {
	System.out.println(iterator.next());
}

Iterator 를 사용해서 값을 출력할 수 있다. 

while문의 hasNext() 로 다음 값이 존재한다면, next() 값을 출력해주면 된다.