問題タブ [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.

0 投票する
11 に答える
27812 参照

c - Cでintとfloatの関係比較は直接可能ですか?

私はVisualStudio6を使用しており、cで記述された古いコードがいくつかあります。コードが次のようになる問題を見つけました。

これは有効な比較ですか?実行時にフロートの割り当てが3.0000001であり、これが失敗する可能性はありますか?

0 投票する
7 に答える
3677 参照

java - equals() メソッドの最適化

equals()メソッド (さらに言えば、メソッドも)compareTo()は、パフォーマンスのホットスポットになる可能性があります (たとえば、高トラフィックでHashMap)。これらの方法が必要であることが判明した場合に、これらの方法を最適化するために人々がどのようなトリックを採用したのか疑問に思っていました.

たとえば、IntelliJ IDEA は以下を生成します。

equals()他に、優れたパフォーマンスのメソッドを作成するためのガイドラインになり得るものはありますか?

0 投票する
1 に答える
1401 参照

scala - HashSet で代替比較を使用する

HatTrie の一種で使用する HashSet[Array[Byte]] を作成しているときに、この問題に出くわしました。

どうやら、配列の標準的な equals() メソッドは同一性をチェックします。要素がセットに含まれているかどうかを確認するために .deepEquals() を使用する代替 Comparator を HashSet に提供するにはどうすればよいですか?

基本的に、このテストに合格したい:

Array[Byte] を別のオブジェクトにうまくラップすることはできません。それらがたくさんあるからです。この目的のために新しい HashSet 実装を書く以外に、私にできることはありますか?

0 投票する
8 に答える
8054 参照

java - なぜこれらは==であるが、 `equals()`ではないのですか?

Javaの扱い方==equals()、その他の種類の数値については少し混乱しています。例えば:intInteger

出力(多分あなたは最初にあなたの推測をするべきです):

  1. X == Y異なるオブジェクトであるため、コンパイルされないことが予想されます 。
  2. 9がデフォルトでであり、1)がコンパイルさえされていないことを考えると、私は少し驚いてY == 9います。を期待するメソッドにを入れることはできませんが、ここではそれらは等しいことに注意してください。trueintintShort
  3. これは2つと同じ理由で驚くべきことですが、もっと悪いようです。
  4. xとに自動ボックス化されているので、当然のことIntegerです。
  5. 当然のことながら、異なるクラスのオブジェクトはであってはなりませんequal()
  6. 何?? X == yですtrueが?X.equals(y)_ 常により厳密にfalseすべきではありませんか?==equals()

誰かが私がこれを理解するのを手伝ってくれるなら、私はそれを感謝します。==とequals()はどのような理由でこのように動作しますか?

編集: この動作が-128から127までの整数の動作とは関係がないことを示すために、9を9000に変更しました。

2番目の編集: わかりました。このことを理解していると思われる場合は、念のため、次のことを検討する必要があります。

出力:

その理由は、私が理解している限りでは次のとおりです。

  1. 別のインスタンス、とても違う。
  2. Xボックス化されていない場合は同じ値なので、等しい。
  3. 同じ値なので、等しい。
  4. yボックス化するIntegerことはできないので、等しくすることはできません。
0 投票する
5 に答える
22678 参照

c# - 完全なIEquatable実装リファレンスはありますか?

ここでのSOに関する私の質問の多くは、IEquatableの実装に関するものです。ナイーブな実装には多くの隠れたバグがあり、それについて私が見つけた記事はかなり不完全であるため、正しく実装することは非常に難しいことがわかりました。私は、以下を含まなければならない決定的な参照を見つけたり、書きたいと思っています。

  • IEquatableを正しく実装する方法
  • Equalsを正しくオーバーライドする方法
  • GetHashCodeを正しくオーバーライドする方法
  • ToStringメソッドを正しく実装する方法
  • 演算子を正しく実装する方法==
  • 演算子を実装する方法!=正しく

そのような完全な参照はすでに存在しますか?

PS:MSDNリファレンスでさえ私には欠陥があるようです

0 投票する
1 に答える
389 参照

.net - ハッシュセットと、すべてのメンバーが同一のクラスの異なるインスタンス

myclass というクラスがあるとします。

私のコードには、myclass の 2 つのインスタンス、myclass1 と myclass2 があります。それらについてのすべては、(パブリックおよびプライベート)プロパティが同一であることです。

それらの両方を HashSet に追加しようとすると、両方または 1 つだけが追加されますか? 両方を追加したくない場合は、myclass 定義で equals を上書きできますか? HasSet はそれを使用する方法を知っていますか?

0 投票する
2 に答える
997 参照

scala - ScalaのBigDecimalはequals/hashCodeコントラクトに違反していますか?

Ordered trait要求に応じて、ScalaのクラスのメソッドequalsBigDecimal順序と一致しています。ただし、ハッシュコードはラップされたものから取得されるだけなjava.math.BigDecimalので、equalsとは矛盾します。

これが既知の問題であるという言及は見つかりません。私は何かが足りないのですか?

0 投票する
7 に答える
34070 参照

comparison - nullをチェックして2つのオブジェクトを比較します

JDKには、2つのオブジェクトが等しいかどうかを比較し、nullを考慮したメソッドがありますか?このようなもの:

このメソッドを自分で書くのはばかげているようです。すでにどこかに存在している必要があると思うからです。

0 投票する
5 に答える
24684 参照

c++ - オブジェクトを別のオブジェクトと等しくする

そのうちの1つが宣言されているときに、2つのオブジェクトを互いに等しくすることができることを私は知っています。私は自分のプログラムでこれをテストしました。しかし、私が代入ステートメントを使いに行ったとき、それはびっくりしました。代入ステートメントを使用して2つのオブジェクトを互いに等しくすることはできますか、それとも1つのオブジェクトが宣言されているときにのみそれを行うことができますか?