2013-12-13 2 views
0

자바에서 해시 테이블을 만들고 분석 할 필요가 있습니다. 내 분석 작업 중 하나는 해시 값을 단일 값으로 비교하는 것입니다.해시 테이블 탐색에서 Nullpointer 예외가 발생했습니다.

소수 (임의 결정) 인 경우 해시 테이블을 임의의 숫자로 채 웁니다. 내가 생성하는 randoms의 양은 0.8 * primeNumber와 같습니다. 해시 충돌을 처리하기 위해 별도의 연결을 사용하고 있습니다. 해시 테이블의 배열은 노드를 저장하지만 각 노드는 다른 노드를 가리킬 수 있습니다 (실제로는 연결된 목록의 배열입니다).

내 문제는 전체 해시에서 얼마나 많은 노드가 하나의 값으로 표시되는지 확인하기 위해 버킷 (노드 배열 유지 노드)을 통과하려고 할 때입니다. 예를 들어, 우리 함수가 값 % prime이고 우리의 소수가 5이고 숫자가 {10, 5, 2, 7, 15, 4, 23}이면 10, 5, 15가됩니다. 해쉬는 하나의 값 (0은 5와 5가 0이기 때문에 0과 마찬가지로 15)과 2와 7은 동일한 값 (5 % 7 = 2)으로 해시됩니다. 1 개 값으로 해싱 (기본적으로, 문제는 해시 충돌의 수를 찾을 수 있습니다) 때문입니다

답변

0

:.. 한 지점에서

public Node getNext() { return nextNode; } 

널 (null)을 반환 당신이 (h.hasNext를 발행 그래서 때)이고 h가 null이면 NullPointerException이 발생합니다. 핵심 로직을 변경하면 가장 간단한 해결 방법은 null 체크입니다 :

while (h != null && h.hasNext()) { 
관련 문제