問題タブ [equals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java で equals と hashCode をオーバーライドする場合、どのような問題を考慮する必要がありますか?
equals
andをオーバーライドする際に考慮しなければならない問題/落とし穴は何hashCode
ですか?
c# - 参照型の Equals() の「最適な」正規実装は何ですか?
参照型に Equals() を実装するのは、思ったより難しいです。私の現在の正規の実装は次のようになります。
これはすべてのコーナー(継承など)のケースをカバーしていると思いますが、間違っているかもしれません。皆さんはどう思いますか?
c# - 等しい演算子を書くときにnullを処理するための最良の方法
オブジェクトの==演算子をオーバーロードするとき、私は通常次のように記述します。
反対するためにダウンキャストしない場合、関数はそれ自体に再帰しますが、より良い方法がないかどうか疑問に思う必要がありますか?
java - コレクションの hashCode メソッドの最適な実装
コレクションのメソッドの最適な実装をどのように決定しますかhashCode()
(equals メソッドが正しくオーバーライドされていると仮定して)。
java - Java equals():反映するか反映しないか
この質問は、特に、多数のフィールドを持つオブジェクトのequals()メソッドのオーバーライドに関連しています。まず、この大きなオブジェクトは、オブジェクト指向の原則に違反せずに複数のコンポーネントに分割することはできないため、「xフィールドを超えるクラスはありません」と言っても役に立ちません。
次に、フィールドの1つが等しいかどうかを確認するのを忘れたときに、問題が発生しました。したがって、私のequalsメソッドは正しくありませんでした。それから私はリフレクションを使うことを考えました:
この投稿の目的は、必ずしもコードをリファクタリングすることではなく(これは、私が使用しているコードでもありません)、代わりに、これが良いアイデアであるかどうかについての入力を取得することです。
長所:
- 新しいフィールドが追加されると、自動的に含まれます
- このメソッドは、30ifステートメントよりもはるかに簡潔です。
短所:
- 新しいフィールドが追加されると、それは自動的に含まれますが、これは望ましくない場合があります
- パフォーマンス:これは遅くする必要があります。プロファイラーを分割する必要はありません。
- 比較で無視する特定のフィールドをホワイトリストに登録するのは少し醜いです
何かご意見は?
java - オブジェクトのアドレスから hashCode() を計算する方法は?
Java にVertex
は、Java3D クラスのサブクラスがありPoint3f
ます。座標の値に基づいてPoint3f
計算するようになりましたが、私のクラスではより厳密にしたいと考えています。2 つの頂点が等しいのは、それらが同じオブジェクトである場合のみです。ここまでは順調ですね:equals()
Vertex
これが の契約に違反していることはわかってequals()
いますが、頂点を他の頂点と比較するだけなので、これは問題ではありません。
ここで、頂点を に配置できるようにするにHashMap
は、hashCode()
メソッドは と一致する結果を返さなければなりませんequals()
。現在それを行っていますが、おそらく戻り値は のフィールドに基づいているため、同じ座標を持つPoint3f
異なるオブジェクトに対してハッシュ衝突が発生します。Vertex
したがって、のフィールドhashCode()
から計算するのではなく、オブジェクトのアドレスに基づいて を使用したいと思います。クラスがこれを行うことはVertex
知っていますが、メソッドをオーバーライドするため、そのメソッドを呼び出すことはできません。Object
hashCode()
Point3f
だから、実際に私の質問は2つあります:
- 私はそのような浅いものが欲しい
equals()
ですか? - はいの場合、ハッシュコードを計算するためのオブジェクトのアドレスを取得するにはどうすればよいですか?
編集:私は何かを考えました...int
オブジェクトの作成時にランダムな値を生成し、それをハッシュコードに使用できます。それは良い考えですか?なぜだめですか)?
java - Java標準の「nullまたはequalの両方」の静的メソッドはありますか?
入力を節約してコードを明確にするために、次のメソッドの標準バージョンはありますか?
java - Java equals() メソッドをオーバーライドする - 機能しない?
今日、メソッドで興味深い (そして非常に苛立たしい) 問題に遭遇しましたequals()
。これにより、十分にテストされたクラスと思われるものがクラッシュし、追跡に非常に長い時間がかかったバグが発生しました。
完全を期すために、私は IDE やデバッガーを使用していませんでした。古き良きテキスト エディターと System.out だけです。時間は非常に限られており、それは学校のプロジェクトでした。
とにかく -
オブジェクトArrayList
をBook
含むことができる基本的なショッピングカートを開発していました。Cart のaddBook()
、removeBook()
、およびメソッドを実装するために、 が. だから私は行きます -hasBook()
Book
Cart
テストではすべて正常に動作します。6 つのオブジェクトを作成し、それらにデータを入力します。で多くの追加、削除、has() 操作を実行するCart
と、すべて正常に動作します。私はあなたが持つことができるかequals(TYPE var)
equals(Object o) { (CAST) var }
、それが機能していたので、あまり問題ではないと仮定したことを読みました.
その後、問題が発生しました。 Book クラス内からのみBook
を含むオブジェクトを作成する必要がありました。他のデータは入力されません。基本的には次のとおりです。ID
突然、このequals(Book b)
方法は機能しなくなりました。Cart
適切なデバッガーがなく、クラスが適切にテストされ、正しいと仮定すると、これを追跡するのに非常に長い時間がかかりました。メソッドを次のように交換equals()
した後:
すべてが再び機能し始めました。明らかにBook
オブジェクトであるにもかかわらず、メソッドが Book パラメーターを取らないことにした理由はありますか? 唯一の違いは、同じクラス内からインスタンス化され、1 つのデータ メンバーだけで満たされているように見えました。私は非常に混乱しています。光を当ててください?
java - HashCode なしのエラー、Equals eclipse
プロジェクト内のクラスが hashCode または equals メソッドを実装していないかどうかを教えてくれる、非常に具体的な Eclipse プラグインを探しています。
そのようなプラグインを知っている人はいますか?
ありがとう
javascript - 2 つの JavaScript オブジェクトが等しいかどうかを判断する方法は?
厳密な等価演算子は、2 つのオブジェクトタイプが等しいかどうかを示します。しかし、 Javaのハッシュ コード値のように、2 つのオブジェクトが等しいかどうかを判断する方法はありますか?
スタック オーバーフローの質問JavaScript には任意の種類の hashCode 関数がありますか? この質問に似ていますが、より学術的な回答が必要です。上記のシナリオは、それが必要な理由を示しており、同等のソリューションがあるかどうか疑問に思っています。