https://kizoo.gitlab.io/docs/archive/java/002/
1. HashSet으로 1들의 집합을 만듭니다.
- HashSet을 사용한 중복 제거에도 불구하고 set 안에는 왜 5개나 되는 1이 존재하는 것일까?
- 자바는 모든 객체에 해시코드가 있다. 또한 타입마다 해시코드가 다르기 때문에 이 각기 다른 타입이 가진 해시코드 때문에 값은 같아도 다른 것으로 인지해 1이 다양하게 남아있는 것이다.
2. 분수(유리수)를 정의
- 분수를 약분까지 끝내 해시셋에 넣었지만 값이 모두 같은데 다 중복제거 되지 않은 채로 들어가 있는 이유는 이 역시도 각기 다른 객체로 서로 다른 해시코드를 갖기 때문이다. 이 경우엔 hashcode를 오버라이드해줘서 같게 만들어주고 equals 역시도 오버라이드해서 값을 같은지 비교할 수 있게하여 준다.
3. TreeSet과 HashSet
- HashSet
- equals와 hashCode를 사용해 값 비교를 합니다.
- 성능이 다른 Set에 비해서 좋습니다.
- TreeSet
- compareTo로 값 비교를 합니다.
- 이 경우엔 순서가 있는 경우 사용하고 해시셋에 비해 성능은 좋지 않습니다.
- TreeSet은 comparable interface를 사용해주어야 합니다.
'Back-End > 백엔드 관련 정리' 카테고리의 다른 글
[백엔드 과정][자바 기초] - 큐 구현하기 (1. ArrayList를 이용한 구현) (0) | 2022.09.06 |
---|---|
[백엔드 과정][자바 기초] - 스택 구현하기 (2.LinkedList를 이용한 구현) (0) | 2022.09.06 |
[백엔드 과정][자바 기초] - 스택 구현하기 (1. ArrayList를 이용한 구현) (0) | 2022.09.06 |
[백엔드 과정][자바 기초] - call - by - value (0) | 2022.08.31 |
[백엔드 과정][자바 기초] - 1. 추상클래스와 인터페이스(1) (0) | 2022.08.29 |