컬렉션 프레임워크(1)_HashSet(1)

2021. 8. 27. 13:10java

1. HashSet 생성

Set<E> set = new HashSet<E>( );

Set<E> set = new HashSet<>( );로도 사용할 수 있음.

파라미터E에는 컬렉션에 저장할 객체타입을 지정.

 

2. 특징

Set 컬렉션은 객체를 순서없이 저장, 동일한 객체는 중복 저장하지 않음(수학의 집합 개념과 유사)

 

3. 작동원리

  • 객체의 hashCode() 메소드 리턴값과 이미 저장되어 있는 객체들의 해시코드값이 다른 경우 -> 저장.
  • 만약 동일한 해시코드가 있다면, 다시 equals() 메소드 리턴값으로 두 객체를 비교
    false가 나오면 ->다른 객체이므로 저장.
    true가 나오면 ->동일한 객체로 판단하여 중복 저장하지 않음.

 

4. Set 인터페이스의 메소드

기능 메소드 설명
객체 추가 boolean add(E e) 주어진 객체를 저장
객체 검색 boolean contains(Object o) 주어진 객체가 저장되어있는지 조사
boolean isEmpty() 컬렉션이 비어있는지 조사
Iterator<E> iterator() 반복자
int size() 저장되어있는 전체 객체 수 리턴
객체 삭제 void clear() 저장된 모든 객체를 삭제
boolean remove(Object o) 주어진 객체를 삭제

 

HashSet 예시

<참고> 

전체 객체를 대상으로 한 번씩 반복해서 가져오는 Iterator

Iterator 인터페이스에 선언된 메소드

  • boolean hasNext() : 가져올 객체가 있으면 true를 리턴, 없으면 false를 리턴
  • E next() : 컬렉션에 하나의 객체를 가져옴
  • void remove() : Set 컬렉션에서 객체를 제거

 

향상된 for문

반복을 실행하기 위해 괄호 ( )에는 배열에서 꺼낸 항목을 저장할 변수 선언콜론(:), 컬렉션 항목을 작성