왜 hashCode에서 승수로 31을 사용할까?
hashCode를 구현할 때 31 숫자를 많이 사용한다. 그래서 그 이유에 대해서 찾아보았다. 홀수인 소수이다 첫번째로 31은 소수이기 때문에 사용된다. 소수인 경우에는 값을 곱하였을 때 더 분산이 잘 된다. 만약 소수가 아닌 경우(다른 수로도 배수가 만들어지는 경우)에 충돌이 발생하기 쉽기 때문이다. 짝수로 해시값이 나오는 경우에는 홀수 번째 자리를 효율적으로 사용하지 못한다. 따라서 소수를 사용해서 충돌을 최대한 방지하는 것이다. 쉬프트 연산을 사용할 수 있다 X * 31은 쉬프트 연산과 뺄셈 연산으로 표현할 수 있다. X * 31 X * (32 - 1) X * 32 - X X
개발직설/기타
2022. 8. 15. 23:55
[Kotlin] toString / equals / hashCode
코틀린에서도 toString, equals, hashCode 메서드를 오버라이딩할 수 있다. 그리고 이 메서드들은 자바와 같은 역할을 한다. Mac OS의 IntelliJ에서 [Control] + [O]를 입력하면 해당 메서드들을 쉽게 정의할 수 있다. toString toString은 문자열을 표현할 때 사용하는 방법이다. 클래스에 toString을 오버라이딩하지 않으면 인스턴스를 출력할 때 주소값이 출력된다. class Client(val name: String, val postalCode: Int) { override fun toString() = "Client(name=$name, postalCode=$postalCode)" } 위 코드는 Client 클래스에 toString 메서드를 작성한 것이..
Programming Language/Kotlin
2022. 8. 14. 23:34
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- postman collection
- pm.test
- Python
- 주생성자
- Kotlin In Action
- Kotlin
- 1차 인터뷰
- squash merge
- DGS Framework
- java
- github
- Basic Type
- 코딩테스트
- solidity
- postman
- pm.expect
- 확장 함수
- 코틀린
- downTo
- python3
- string
- 2차 인터뷰
- hashcode
- mysql
- go 특징
- graphql
- Squash and merge
- 네이버 2022 공채
- git
- postman tests
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함