2013년 9월 8일 일요일

[7주차 1일] HashCode

// fully-qualified class name + '@' + hashCode
System.out.println(s1.toString());
// 결과 예) test.HashTest01$Student@3c635421

// hashCode: 해당 인스턴스를 구분하는 ID값
System.out.println( Integer.toHexString(s1.hashCode()) );
//결과 예) 3c635421

 Hash Code?
 - 데이터를 구분하기 위한 ID
 - 원본 데이터를 특별한 계산공식(알고리즘)을 이용하여 짧은 ID값을 뽑아낸다.
 - 특별한 계산공식? MD4, MD5, SHA-1, ...
  . MD4(Message Digest) : 16byte
  . MD5 : 16bbyte
  . SHA-1 : 20byte
  . SHA-256 : 32byte

* 특별한 공식:  원본 데이터를 구분할 수 있는 값을 리턴.

* HashCode는 원본 데이터를 비교하면 시간이 너무 많이 걸리기 때문에 원본이 같은지 여부를 빠르게 비교하기 위해서 특별발 공식에 의해서 ID값을 뽑아내게 되는게 이때, 다른 데이터가 같은 ID를 가질수 있기 때문에 항상 오류의 가능성을 내포하고 있다.

댓글 없음:

댓글 쓰기