2010-12-17 3 views
1

해시 맵 내부적으로 데이터를 저장하는 방법 ... 키의 HashCode 값을 계산하여 저장한다는 것을 알고있었습니다. 동일한 해시 코드를 갖는 두 개의 키가 있으면 기존? "두 개의 키가 쓰기를 통해 동일한 해시 맵이다"경우 버킷. 그런데 왜두 개의 키가 같은 hashMap over write "기존 키?

답변

1

해시 코드 코드의 주 목적은 해시 기반 컬렉션에서 equals 메서드 호출 횟수를 줄이는 것입니다. 동일한 해시 코드는 equals 메소드에 대해 true를 반환 할 필요가 없습니다. 그러나 당신이 그것의 동등 물이 진실하다는 것을 말하면, 그 때 hascode는 진실해야한다.

9

글쎄, 그게 그렇게 설계되었습니다. 그것은 키/값 쌍의 매핑, 어떤 키가 0 또는 1 값과 관련이 있습니다. 만약 당신이 put 키에 대한 두 번째 값은 해당 키의 항목을 대체합니다.

해시 코드를 기반으로하지는 않지만 키가 동일한 지 테스트합니다. 두 개의 키가 같지 않지만 동일한 해시 코드를 가질 수 있습니다. 중요한 것은 두 개의 등호 의 해시 코드가 같아야한다는 것입니다.

단일 키에 대해 여러 값을 저장하려면 구아바의 Multimap과 같은 것을 사용해야합니다.

4

hashCode()이 같으면 값을 덮어 쓰지 않습니다. 동등한 경우에만 덮어 씁니다 equals 방법.

1

해시 함수는 일반적으로 중복 데이터를 제거하는 데 사용됩니다. 그 이유는 컬렉션에 중복 데이터를 저장할 수 없도록 해시 맵과 같은 을 입력하는 이유입니다. 이 알고리즘은 검색 중에 중복 가능성을 제거하기 위해 데이터베이스에서도 사용되었습니다.

관련 문제