| HashSet<int[]>와 Hashset<ArrayList<Integer>>
문제를 풀다보면, 좌표를 집합에 넣어야 하는 경우가 있었다.
예를 들어, (0, 1), (2, 1)
그래서 아무 생각 없이 아래와 HashSet<int[]>를 쓰게 되면 contains를 할 때 검색이 제대로 되지 않는 걸 볼 수 있다.
왜 그럴까?
이유는 배열의 경우 Hashcode를 비교하고,
리스트의 경우 Wrapper된 Integer값을 비교하기 때문.
HashSet<int[]> | int | 배열의 hashcode를 비교 |
HashSet<ArrayList<Integer>> | Integer | List의 Wrapper객체(Integer)를 비교 |
따라서, 좌표와 같은 수열의 집합을 만든다고 하면 HashSet 안에 ArrayList로 넣는 것이 좋다.
[ 참고 ]
https://stackoverflow.com/questions/65454683/check-if-an-array-exists-in-a-hashsetint
'Computer Science > Algorithm' 카테고리의 다른 글
[알고리즘] 그리디 (0) | 2022.08.25 |
---|---|
[알고리즘] 탐색 - DFS, BFS, 이진 탐색 (0) | 2022.08.25 |
[알고리즘] 정렬 (0) | 2022.08.11 |
[알고리즘] 알고리즘 개요 (0) | 2022.08.09 |
[백준 11660] 구간 합 구하기 5 (0) | 2022.07.14 |