Wenn in der Originalkarte kein Schlüssel vorhanden ist, wird sie erstellt. Wenn der Originalschlüssel vorhanden ist, wird der Originalwert mit dem Wert überschrieben
Diese Implementierung fügt eins zum ursprünglichen Wert hinzu (Voraussetzung: Es gibt diesen Schlüssel)map.put(key,value);
123456
personStudent
71213null
Quellcode
hashCode-Quellcodemap.get Quellcodemap.put(key,map.get(key)+1);Nach dem Login kopieren
map.getOrDefault(key,value);
Kurz gesagtSie können sehen, dass zuerst eine Tabelle erhalten wird, bei der es sich tatsächlich um ein Array handelt. Suchen Sie dann in der Tabelle den Wert, der dem Schlüssel entspricht. Das Kriterium für die Suche besteht darin, dass der Hash dem Hash des übergebenen Parameters entspricht und eine der beiden anderen Bedingungen erfüllt: k = e.key, was bedeutet, dass es sich um dasselbe Objekt oder den Schlüssel des gleichen Ziels handelt des übergebenen Schlüssels. Unser Problem liegt im Hash(key.hashCode()). Sie können sehen, dass HashMap den HashCode des Schlüssels beim Speichern von Elementen hasht. Der erhaltene Hash wird schließlich als Grundlage für den Speicherort des Elements verwendet. Entsprechend unserer Situation: Beim ersten Speichern verwendet die Hash-Funktion key.hashCode als Parameter, um einen Wert abzurufen, und speichert das Element dann basierend auf diesem Wert an einem bestimmten Ort.
Wenn wir das Element erneut abrufen, hat sich der Wert von key.hashCode geändert, sodass sich auch das Ergebnis der Hash-Funktion hier geändert hat. Wenn also versucht wird, den Speicherort dieses Schlüssels abzurufen, kann das Ergebnis nicht ermittelt werden im Zielelement wird am Ende nicht gefunden. Um es korrekt zurückzugeben, ist es sehr einfach, die HashCode-Methode der Person-Klasse so zu ändern, dass ihr HashCode nicht von dem Attribut abhängt, das wir ändern möchten. Wir hoffen jedoch immer, dass dies der Fall ist Die Attribute der beiden Objekte sind unterschiedlich. Wenn sie genau gleich sind, können unterschiedliche HashCode-Werte zurückgegeben werden.
Die Schlussfolgerung ist also, dass Sie nach dem Platzieren des Objekts in einer HashMap die Attribute des Schlüssels nicht ändern dürfen, es sei denn, Sie überschreiben die hashCode-Methode der Entitätsklasse, die keinen Attributbeschränkungen unterliegt.
Das obige ist der detaillierte Inhalt vonSo ändern Sie den Wert in Hashmap basierend auf dem Schlüsselwert in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!