get
Scala のクラスのメソッドを呼び出すときにHashMap
、キーが存在するかどうか (つまり、マップ内のキーが提供されたキーと等しいかどうか) を確認するために使用されるメソッドはどれですか? それですか、==
それとも別のものですか?
Scala API はそれについて明確に述べていません:
「オプションで、キーに関連付けられた値を返します」
get
Scala のクラスのメソッドを呼び出すときにHashMap
、キーが存在するかどうか (つまり、マップ内のキーが提供されたキーと等しいかどうか) を確認するために使用されるメソッドはどれですか? それですか、==
それとも別のものですか?
Scala API はそれについて明確に述べていません:
「オプションで、キーに関連付けられた値を返します」
ハッシュ マップは、最初にハッシュ値をチェックし、次に ID をチェックします。だから「方法」は
key.hashCode == entry.hashCode && key == entry
(key
はテストしentry
ているアイテムであり、既にマップ内にあるアイテムです)。特に、メソッドscala.collection.immutable.HashMap
内でまさにこのフォームを使用しますget
(Scala バージョン 2.9 以降)。
したがって、identity の動作を変更したい場合は、hashCode
および ofをオーバーライドする必要がありますequals
。また、既にマップにある項目のオーバーライドされた動作に依存することはできません。equal メソッドが呼び出されるのは、テストするものです。(しかし、一般に、どの equals メソッドが呼び出されるかについては保証されていないため、この動作に頼るべきではないことに注意してください。)
def contains(key: A): Boolean
このマップにキーのバインディングが含まれているかどうかをテストします。
と:
def get(key: A): Option[B]
オプションで、キーに関連付けられた値を返します。
オプションの意味: ラップされた特定のキーに関連付けられた値を返すか、Some
そのNone
ようなキーの値が存在しない場合。