問題タブ [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.
c# - Object.Equals(obj1, obj2) 対 obj1.Equals(obj2)?
両方のオブジェクトが値型ではなく、両方が Equals(...) メソッドをオーバーライドした型を表していると仮定すると、以下の間に機能上の違いはありますか?
- 通話中
obj1.Equals(obj2)
- 呼び出し
Object.Equals(obj1, obj2)
...または機能的に同じですか?
私が読んでいる Apress の本 (Pro C# 2008) は、実際には非常に優れており、このメソッド (およびReferenceEquals(...)
) を「(非常に役立つ) 静的メソッド」と呼んでいますが、ここでの利点を理解するのに苦労しています。
ReferenceEquals(...)
2 つのオブジェクトが同じオブジェクトを参照しているかどうかを判断できるため (メソッドと演算子がオーバーライドされているかどうかに関係なく)、ユーティリティを確認できEquals(...)
ます==
。
もう一方については...それほどではありません。ここで何かが足りないのですか?
javascript - JS: プロンプト ボックスに TRUE 値を入力し、その変数を警告する
変数の値をプロンプト ボックスに入力して、元の変数のアラートで返されるようにすることは可能かどうか疑問に思っています。
説明:プロンプトにvar myGoal = "answer";
「 」と入力した場合、「 」の値を取得して検索し、アラートで返すにはanswer
どのような方法がよいでしょうか?answer
myGoal
java - 常に等しいをオーバーライドする必要がありますか?
自分のクラスを書くとき、常にオーバーライドする必要がありますequals(Object o)
か?
そうしないと、すべてのフィールドが同じであることが自動的にチェックされますか?それとも、2つの変数が同じオブジェクトを指しているかどうかをチェックするだけですか?
java - compareTo()とequals()
Javaでの等しいかどうかをテストするときString
、私はいつもequals()
これを使用しました。なぜなら、これが最も自然な方法のように思われるからです。結局のところ、その名前はすでにそれが何をしようとしているのかを示しています。しかし、私の同僚は最近、のcompareTo() == 0
代わりに使用するように教えられたと私に言いましたequals()
。これは不自然に感じ(compareTo()
順序付けを提供し、平等を比較しないことを意味します)、多少危険です(compareTo() == 0
すべての場合に平等を意味するわけではありませんが、私はそれが平等であることを知っていますがString
)。
彼はなぜ彼がのcompareTo()
代わりにequals()
使うように教えられたのか知りませんでしたString
、そして私もその理由を見つけることができませんでした。これは本当に個人的な好みの問題ですか、それともどちらの方法にも本当の理由がありますか?
c# - GetHashCodeの問題
誰かが次のことを説明するのを手伝ってもらえますか?オブジェクトとオブジェクトの両方が成功しているContainsKey
ときにfalseと評価される辞書に問題があります。以下は、VisualStudioのイミディエイトウィンドウからの出力です。Equals
GetHashCode
私は何かが足りないのですか?どんなアイデアでも大歓迎です。
java - 順序に関係なく、2 つのコレクションに同じ要素が含まれているかどうかを確認する方法はありますか?
Arrays.equals(a1, a2)
のように動作するが、要素の順序を無視するメソッドを探していました。Google Collections (のようなものですIterables.elementsEqual()
が、それは順序を説明します) と JUnit (assertEquals()
明らかにequals()
Collection の実装に依存する Collection を呼び出すだけで、それは私が望むものではありません) のどちらでも見つけることができませんでした。そのようなメソッドが s を取るなら最高ですがIterable
、単純にCollection
s を取ることも問題ありません。そのようなメソッドはもちろん、コレクション内の重複要素を考慮します (したがって、単純に をテストすることはできませんcontainsAll()
)。
そのようなことを実装する方法を尋ねているわけではないことに注意してください.標準のコレクションライブラリのいずれかにそれがあるかどうか疑問に思っていました.
java - 効率的なequals(Object o)の実装
タイトルを書き留めた後、このSOの投稿を読みましたが、Javaでのequalsのバグプルーフ実装に関する質問に答えることにしました。これは私の通常の実装です
ApacheのEqualsBuilderを使用してありふれたことを行います。これよりもさらに簡単なのは、Netbeanの自動生成さequals(o)
れた実装です
私はこれらを2つのdiffプロジェクトから取得しますが、どちらも同じことを達成しようとしますが、diffアプローチを使用します。どちらのスタイルを選びますか、それとも欠陥を見つけますか?
java - PropertyChangeSupport and equals method
I'll try to explain my problem as clear as possible :). I am using PropertyChangeSupport to notify registered views for changes in the properties. One of the property is an object which properties are changed every view seconds. I don't want to create for this particular object new instance every time it is being updated (for the propertychangelistener to notice the change), so I wrote my own equals method where I ommit the comparation to itself.
Unfortunatelly that doesn't have the effect I was looking for. If I create a copy of the object and fire the property change method on it, then it works fine.
What am I missing here?
-- Edit
I realized, that since I am using the same instance and not a copy of it, the properties are pointig the same place, thus the comparation would always come out true. Is there a workaround to that (besides creating a copy). Or how bad is to create a copy of an object every second, eg.
java - クラスに.equalsメソッドをオーバーライドするように強制します
共通のインターフェースを実装するクラスがたくさんあります:コマンド。
そして、このクラスの束はマップに行きます。
マップを正しく機能させるには、コマンドを実装する各クラスにObject.equals(Object other)
メソッドをオーバーライドする必要があります。
大丈夫だよ。
しかし、私は等しいもののオーバーライドを強制したいと思います。=>コマンドを実装するものがequalsをオーバーライドしない場合、コンパイルエラーが発生します。
それは可能ですか?
編集:ところで、私もハッシュコードのオーバーライドを強制する必要があります...
java - JavaでHashMap equalsメソッドをオーバーライドする
HashMap のソース コードで、equals メソッドが final としてリストされていることに気付きました。オーバーライドしてもコンパイル エラーが発生しないのはなぜですか?
Java HashMap equals メソッド: