java hash 예제

java hash 예제

해시 테이블 내에 값과 동일한 값이 있는 경우 true를 반환합니다. 값을 찾을 수 없는 경우 false를 반환합니다. 또한 충돌이 무엇이며 해시 테이블에 있는 하중 계수를 다루었습니다. 또한 키 개체에 대해 equals() 및 해시코드()를 재정의하는 이유를 배웠습니다. 1) void clear(): 해시테이블에서 모든 키-값 매핑을 제거하고 비웁니다. 키가 없도록 이 해시 테이블을 지웁습니다. 12) 부울 은 Value(개체 값)를 포함합니다: 지정된 개체가 이 해시 테이블의 값인지 테스트합니다. 값과 동일한 값이 해시 테이블 내에 있는 경우 true를 반환합니다. 값을 찾을 수 없는 경우 false를 반환합니다. 따라서 충돌 횟수를 줄이는 것이 중요합니다. 배열이 클수록 충돌 가능성이 작아지다. 로드 계수는 배열 크기와 성능 간의 균형을 결정합니다.

기본적으로 0.75로 버킷의 75%가 비어 있지 않을 때 배열 크기가 두 배가 됩니다. 이 작업은 rehash() 메서드에 의해 실행됩니다. Java에서는 효율적인 해싱 알고리즘이 해시맵(HashMap을 자세히 살펴보고 이 문서를 자유롭게 확인)과 같이 사용할 수 있는 가장 인기 있는 컬렉션 중 일부에 뒤쳐져 있습니다. 같음키는 동일한 해시 코드를 반환해야 하므로 해시코드() 메서드를 재정의합니다: 키와 연결된 값을 포함하는 개체를 반환합니다. 키가 해시 테이블에 없는 경우 null 개체가 반환됩니다. 해시 테이블을 사용하는 가장 큰 매력은 기본 작업 추가, 제거, 포함, 크기에 대한 일정한 시간 성능입니다. 그러나 충돌로 인해 최악의 경우 지속적인 런타임을 보장할 수는 없습니다. 왜? 모든 개체가 동일한 인덱스로 충돌한다고 가정해 보세요.

그런 다음 그 중 하나를 검색하는 것은 라이너 런타임이 걸리는 목록에서 검색하는 것과 같습니다. 그러나 목록이 너무 길지 않도록 하면 예상되는 지속적인 런타임을 보장할 수 있습니다. 이는 일반적으로 목록의 평균 길이를 추적하는 하중 계수를 유지 관리하여 방해됩니다. 로드 팩터가 고급 임계값의 집합에 접근하면 더 큰 배열을 만들고 이전 테이블의 모든 요소를 새 배열로 다시 해시합니다. 메서드hasCode는 다른 클래스에서 다른 구현. String 클래스에서 해시코드는 Java가 이 문제를 처리하기 위한 여러 데이터 구조를 제공합니다(예: 여러 Map 인터페이스 구현은 해시 테이블)에 의해 계산됩니다. 7) void rehash(): 해시 테이블의 크기를 늘리고 모든 키를 다시 해시합니다. 해시 코드 메서드를 구현 하는 옵션 중 표준 라이브러리에서 Objects.hash를 언급 하려면이 게시물을 업데이트 하십시오.

예를 들어 사용자 클래스의 경우 Objects.hash(id, 이름, 전자 메일) 입니다. 이러한 매핑의 가장 간단한 예는 직접 주소 테이블입니다. 여기서 키는 인덱스로 사용됩니다: 따라서 모든 키 개체는 hashCode()를 사용하여 정수로 변환할 수 있습니다. 그러나이 정수는 클 수 있습니다. (equals())에 따라 같은 개체는 동일한 해시 코드를 반환해야 합니다. 다른 개체가 다른 해시 코드를 반환할 필요는 없습니다. 적어도 이클립스에서 실행하려고 할 때 해시 테이블은 원시 유형입니다. 제네릭 형식 해시 테이블에 대한 참조는 매개 변수화되어야 합니다." 다음과 같은 두 가지 참조 유형을 사용하여 선언해야 합니다.해시 테이블 회사 = 새 해시 테이블(). 이렇게 하면 해시 테이블에 문자열이 아닌 개체를 넣으려고 할 때 컴파일 시간 오류가 표시됩니다. 아주 좋은 그래서 당신은 같은 바보 같은 일을하지 않습니다:companies.put ("구글",909); 모든 Java 개체는 int 값을 반환하는 hashCode() 메서드를 상속합니다.

אין תגובות

מצטער, טופס התגובה סגור בשלב זה.