> Java > java지도 시간 > 본문

Java에서 HashMap의 내부 작동

WBOY
풀어 주다: 2023-08-28 13:37:46
앞으로
1304명이 탐색했습니다.

Java에서 HashMap의 내부 작동

'hashCode' 함수는 Java에서 객체의 해시 코드를 가져오는 데 사용됩니다. 이것은 슈퍼클래스 Object의 객체입니다. 객체가 참조하는 메모리를 정수로 반환합니다. 이는 기본 함수입니다. 즉, 객체에 대한 참조를 얻기 위해 Java에서 메소드를 직접 사용할 수 없습니다.

HashMap의 성능을 향상시키려면 hashCode()를 올바르게 사용해 주세요. 기본적으로 이 함수는 버킷 및 인덱스 값을 계산하는 데 사용됩니다. 정의 방법은 다음과 같습니다. -

public native hashCode()
로그인 후 복사

이제 "버킷"에 대해 언급했으므로 그 의미를 이해하는 것이 중요합니다. 노드를 저장하는 데 사용되는 요소입니다. 버킷에는 노드가 2개 이상 있을 수 있습니다. 노드는 연결리스트 데이터 구조를 사용하여 연결될 수 있습니다. 해시맵의 용량은 버킷과 부하율로 계산할 수 있습니다.

Capacity = number of buckets * load factor
로그인 후 복사

"equals" 함수는 두 개체가 같은지 확인하는 데 사용됩니다. 이는 또한 슈퍼클래스 Object에 의해 제공됩니다. 이 함수는 사용자 정의 구현을 제공하여 사용자 정의 클래스에서 재정의될 수 있습니다. 이 함수는 문제의 두 객체가 동일한지 여부에 따라 true 또는 false를 반환합니다.

배열의 크기가 너무 크지 않도록 인덱스 값을 생성하여 outOfMemoryException을 방지합니다. 배열의 인덱스를 찾는 공식은 -

Index = hashCode(key) & (n-1) – Here n refers to number of buckets.
로그인 후 복사

예제를 살펴보겠습니다. -

Example

Live Demonstration

import java.util.HashMap;
class hash_map{
   String key;
   hash_map(String key){
      this.key = key;
   }
   @Override
   public int hashCode(){
      int hash = (int)key.charAt(0);
      System.out.println("The hash code for key : " + key + " = " + hash);
      return hash;
   }
   @Override
   public boolean equals(Object obj){
      return key.equals(((hash_map)obj).key);
   }
}
public class Demo{
   public static void main(String[] args){
      HashMap my_map = new HashMap();
      my_map.put(new hash_map("This"), 15);
      my_map.put(new hash_map("is"), 35);
      my_map.put(new hash_map("a"), 26);
      my_map.put(new hash_map("sample"), 45);
      System.out.println("The value for key 'this' is : " + my_map.get(new hash_map("This")));
      System.out.println("The value for key 'is' is: " + my_map.get(new hash_map("is")));
      System.out.println("The value for key 'a' is: " + my_map.get(new hash_map("a")));
      System.out.println("The value for key 'sample' is: " + my_map.get(new hash_map("sample")));
   }
}
로그인 후 복사

Output

The hash code for key : This = 84
The hash code for key : is = 105
The hash code for key : a = 97
The hash code for key : sample = 115
The hash code for key : This = 84
The value for key 'this' is : 15
The hash code for key : is = 105
The value for key 'is' is: 35
The hash code for key : a = 97
The value for key 'a' is: 26
The hash code for key : sample = 115
The value for key 'sample' is: 45
로그인 후 복사

"hash_map"이라는 클래스는 문자열과 생성자를 정의합니다. 이는 "hashCode"라는 다른 함수에 의해 재정의됩니다. 여기서는 해시맵 키 값을 정수로 변환하여 해시 코드를 출력합니다. 다음으로 "equals" 함수가 재정의되고 키가 해시맵의 키와 같은지 확인합니다. Class Demo는 HashMap의 새 인스턴스가 생성되는 주요 기능을 정의합니다. 요소는 "put" 기능을 사용하여 이 구조에 추가되고 콘솔에 인쇄됩니다.

위 내용은 Java에서 HashMap의 내부 작동의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿