Heim  >  Artikel  >  Java  >  Das Innenleben von HashMap in Java

Das Innenleben von HashMap in Java

WBOY
WBOYnach vorne
2023-08-28 13:37:461295Durchsuche

Das Innenleben von HashMap in Java

Die Funktion „hashCode“ wird verwendet, um den Hash-Code eines Objekts in Java abzurufen. Dies ist ein Objekt der Oberklasse Object. Es gibt den vom Objekt referenzierten Speicher als Ganzzahl zurück. Es handelt sich um eine native Funktion, was bedeutet, dass Methoden in Java nicht direkt verwendet werden können, um eine Referenz auf ein Objekt zu erhalten.

Um die Leistung von HashMap zu verbessern, verwenden Sie bitte hashCode() korrekt. Grundsätzlich wird diese Funktion zur Berechnung von Bucket- und Indexwerten verwendet. So ist es definiert:

public native hashCode()

Da wir nun „Eimer“ erwähnt haben, ist es wichtig zu verstehen, was es bedeutet. Es ist das Element, das zum Speichern von Knoten verwendet wird. Ein Bucket kann mehr als zwei Knoten enthalten. Knoten können mithilfe einer verknüpften Listendatenstruktur verbunden werden. Die Kapazität einer Hashmap kann nach Bucket und Auslastungsfaktor berechnet werden.

Capacity = number of buckets * load factor

Die Funktion „equals“ wird verwendet, um die Gleichheit zwischen zwei Objekten zu überprüfen. Es wird auch durch die Oberklasse Object gegeben. Diese Funktion kann in einer benutzerdefinierten Klasse überschrieben werden, indem eine benutzerdefinierte Implementierung bereitgestellt wird. Diese Funktion gibt true oder false zurück, je nachdem, ob die beiden betreffenden Objekte gleich sind.

Generieren Sie Indexwerte, damit die Größe des Arrays nicht sehr groß ist, und vermeiden Sie so eine OutOfMemoryException. Die Formel zum Ermitteln des Index eines Arrays lautet: -

Index = hashCode(key) & (n-1) – Here n refers to number of buckets.

Sehen wir uns ein Beispiel an -

Beispiel

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")));
   }
}

Ausgabe

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

Die Klasse mit dem Namen „hash_map“ definiert einen String und einen Konstruktor. Dies wird durch eine andere Funktion namens „hashCode“ überschrieben. Hier werden die Hashmap-Schlüsselwerte in Ganzzahlen umgewandelt und der Hash-Code gedruckt. Als nächstes wird die Funktion „equals“ überschrieben und prüft, ob der Schlüssel mit dem Schlüssel der Hashmap übereinstimmt. Die Klasse Demo definiert eine Hauptfunktion, in der eine neue Instanz von HashMap erstellt wird. Über die Funktion „Put“ werden dieser Struktur Elemente hinzugefügt und auf der Konsole ausgedruckt.

Das obige ist der detaillierte Inhalt vonDas Innenleben von HashMap in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen