[컴] Java 의 String.HashCode() 의 구현

 java hashcode javascript 로

Java 의 String.HashCode() 의 구현

java api 문서(ref. 1) 에 String.hashCode() 의 계산방법이 나와있다.

계산식은 다음과 같다.

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

java 에서 hashCode() 는 .equals() 를 호출할 때 true 가 나오는 값이라면, 같은 ’hash 값’을 갖도록 하면 된다.

javascript version

String.prototype.hashCode = function(){
    var hash = 0;
    if (this.length == 0) return hash;
    for (i = 0; i < this.length; i++) {
        char = this.charCodeAt(i);
        hash = ((hash<<5)-hash)+char;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
}

Reference

  1. String (Java Platform SE 7 )
  2. How String Hashcode value is calculated? - GeeksforGeeks
  3. [Java/Tip] String.hashCode()는 유일한 값을 반환할까?
  4. Javascript implementation of Java’s String.hashCode() method – Manwe
  5. The 3 things you should know about hashCode() - EclipseSource : hashCode() 를 key 로 쓰면 안되는 이유등이 나와 있다. 간단한 예로, "Aa" and "BB" 가 같은 hashCode 를 갖는다 한다.

댓글 없음:

댓글 쓰기