Set extends Collection
구현 클래스
HashSet
집합에서는 중복되는 원소를 포함할 수 없는 것처럼
HashSet이라는 자료구조는 중복되는 값을 무시한다.
저장된 값들을 인덱스가 없기 때문에 순서가 없다.
값의 유무 검사에 특화되어 있는 자료구조이고
해시코드로 유무 검사가 진행되고 속도가 상대적으로 좋다.
순서 부여 : iterator( )
순서가 없는 객체에 순서를 부여하거나, 순서가 있어도 iterator 방식의 순서로
변경하고자 할 때 사용한다.
hasNext()를 통해 다음 값이 있는지 검사하고, next()를 사용하여 값을 가져온다.
Set 과 ArrayList의 차이점
Set은 검사의 목적이 있기 때문에 순서 정보를 관리할 필요가 없어서 데이터 크기에 상관없이
검색에 걸리는 시간이 매우 짧다.
반면 ArrayList는 index를 관리해야 하기 때문에 상대적으로 시간이 오래 걸린다.
그러므로 기능적 차이가 없다면 Set을 사용한다.
실습
Student 클래스 선언
- 이름, 번호
- private으로 선언
- 기본 생성자 선언
equals()를 재정의했다면, hashCode()도 재정의해야 한다.
hashCode()로 비교하는 자료구조가 여러 번 나타나기 때문에
equals()만 재정의하게 되면 원하는 값으로 비교하지 않고, 필드의 주소로 비교하는
상황이 발생한다. 따라서 equals()에서 비교한 값을 hashCode()의 리턴값으로 재정의해야 한다.
School 클래스 선언
- main 메소드 선언
- 테스트 진행
'국비 > JAVA' 카테고리의 다른 글
JAVA : Thread(쓰레드) (0) | 2022.08.18 |
---|---|
JAVA : Map (0) | 2022.08.17 |
JAVA : Wrapper Class (0) | 2022.08.16 |
JAVA : List extends Collection (0) | 2022.08.16 |
JAVA : 예외처리 & API & Object 클래스 (0) | 2022.08.11 |