배열을 만들 때 연산 결과, 중복된 정수가 나오는 경우
: 중복을 허용하지 않는 HashSet 사용
HashSet 이란?
Set 인터페이스에서 지원하는 구현 클래스.
HashSet의 특징
1. 순서대로 입력되지 않고, 일정하게 유지되지 않음
2. null 요소 허용
3. 중복 허용 X
중복을 걸러내는 과정
HashSet은 객체를 저장하기 전에 먼저 객체의 hashCode()메소드를 호출해서 해시 코드를 얻어낸 다음 저장되어 있는 객체들의 해시 코드와 비교한 뒤 같은 해시 코드가 있다면 다시 equals() 메소드로 두 객체를 비교해서 true가 나오면 동일한 객체로 판단하고 중복 저장을 하지 않습니다.
문자열을 HashSet에 저장할 경우, 같은 문자열을 갖는 String객체는 동일한 객체로 간주되고 다른 문자열을 갖는 String객체는 다른 객체로 간주되는데, 그 이유는 String클래스가 hashCode()와 equals() 메소드를 재정의해서 같은 문자열일 경우 hashCode()의 리턴 값을 같게, equals()의 리턴 값은 true가 나오도록 했기 때문입니다.
HashSet 변수 선언
HashSet<데이터타입> 변수명 = new HashSet<데이터타입>()
여기서 데이터 타입은 기본 타입이 아닌 클래스타입(Wrapper Class)가 와야 합니다.
이때 Wrapper 클래스를 사용해주면 오류를 해결할 수 있다.
Wrapper 클래스 : 기본자료형의 클래스화
HashSet 값 추가/삭제/크기/검색
HashSet<Integer> set = new HashSet<Integer>();
값 추가
set.add(value)
값 삭제
set.remove(value) // 원하는 value값만 삭제
set.clear( ) // 전부 삭제
값 크기
set.size( )
검색하기
set.contains(value) //내부의 원하는 값(value)을 검색하는 경우 사용
[출처]
https://crazykim2.tistory.com/474 [차근차근 개발일기+일상:티스토리]
https://jaewon2336.tistory.com/74 [JJJAEOoni:티스토리]
'코딩테스트 > 문제풀이 팁' 카테고리의 다른 글
[HashSet, HashMap] 롤케이크 자르기 (0) | 2024.02.26 |
---|---|
[HashMap] 여러 요소와 요소의 개수세기 (0) | 2024.02.25 |
[PriorityQueue] 효율적인 스케줄링 (0) | 2024.02.21 |
시간 복잡도 계산 (1) | 2024.02.20 |
int[] -> List<Integer> 반환? 메소드 리턴타입을 바꾸자 (0) | 2024.02.19 |