なぜhashCode()メソッドとequalsをオーバーライドする必要がありますか()?

比喩、ホテルに行くジョー・スミスという男は、フロントデスクは、登録名は99階、100室に行って完了、警察は3人が問い合わせた後、この部屋に住む張と呼ばれるフロントデスクを見つけるに到着し、この時、ホテルでは、張IIIと呼ばれる50の客室には、クエリが便利ではない、クエリを横断する必要がありました。

フロントデスクとがあることを重複したID番号を見つけたとき、警察は、受信ID番号を見つけるために到着したときに、登録ID番号を登録する別の方法を変え、同じハッシュコード値は、その後部屋に割り当てられているハッシュアルゴリズムにより算出されますリンクリストのクエリのパフォーマンスを生み出す警察の検索に問題が発生しますときに、非常に遅いです。

警察は、我々がどの部屋にロックする探している人々を指示できるように、2つの条件に従って同時に調査するために来たときにのみ、しばらくの登録ID番号と名前が時にフロントデスク、第3のレジスタ方法を変更する、そうすることができます。

プログラムでは:良いフロントバイHaxiアルゴリズム登録、名前はイコールとハッシュコードのID番号が同じオブジェクトことを確認するために満たされた場合にのみ、hashCodeメソッドと同様に比較し、equalsメソッドを比較するようなものです。

私たちはクラスと一緒にequalsメソッドを書き換える場合はhashCodeメソッドをオーバーライドする必要があり、両方の方法が満たされる必要があります。

1:すなわち一貫、2つのオブジェクトは、比較が真であると等しいときに、2つのオブジェクトのハッシュコード値が同じであるが、比較が偽に等しい場合、そのリストはハッシュマップに影響を与えるので、その後の値は、同じハッシュコード、およびその逆でなければなりませんクエリのパフォーマンス。

2:それはリライトを書き換える必要がありますペアリライトはハッシュコードに等しいです。

 

おすすめ

転載: www.cnblogs.com/mike-mei/p/11222417.html