問題タブ [icomparable]
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# - JavaコンパレータはC#で同等のものをオーバーライドします
次のクラスをJavaからC#に変換したいと思います。
java - 同等のジェネリックの拡張
さまざまなツリー構造 (標準のバイナリ ツリー、赤黒ツリー、B ツリーなど) を実装する Java のテンプレート ベースのクラスを開発しています。私の考えは、Java Collections のさまざまなリストのようにすることです。これは、指定されたツリーによって展開される 1 つのインターフェイス クラスです。しかし、私は奇妙な問題で壁にぶつかりました:
Java は、オブジェクトが異なるタイプであると考えているようです...どうすれば修正できますか?
これが私のコードの一部です:
Tree.java
BSTree.java
編集:あなたのアドバイスのおかげで、エラーの数を5に減らすことができました。ここに: javac -d ../bin *.java
さて、私のコードにはそれがNode<T>
あり、Tree<T>
どこに欠けていましたか。しかし、まだ何が問題なのですか?
c# - IComparableを打ち抜く手段はありますか大量のコードを複製せずに演算子がオーバーロードしますか?
を実装するタイプがたくさんありますIComparable<T>
。これらのタイプはそのインターフェースを実装するため、次のオーバーロードを提供することは理にかなっています。
これは何度も繰り返すコードがたくさんあります。std::rel_ops
これらの実装を容易にする抽象クラスまたは何か(C ++など)を作成する方法はありますか?
c# - C#でIComparableを受け入れるジェネリックメソッドのdouble.NaNの処理方法
一般的なGetMinimum
方法があります。string[]
IComparableタイプの配列を受け入れます(またはである可能性がありますdouble[]
)。double[]
このメソッドを実装してdouble.NaN
値を無視するにはどうすればよいですか?(私は良い習慣を探しています)
この配列を渡すとき
double.NaNを返します!
c# - double.NaNおよびdouble.NegativeInfinityのCompareToの動作
私はC#(.Net 4)でいくつかの統計操作を行っていましたが、メソッドとdouble[]
で奇妙な動作を見つけました。このコードを試してみると:CompareTo
double.NaN
それdouble.NaN
はさらに小さいことを意味しdouble.NegativeInfinity
ます!なぜこんな感じなのか誰か説明できますか?
c# - 列を並べ替えるには IComparable が必要です
DevExpress xtragrid の列の 1 つで、並べ替え、グループ化、またはフィルタリングが行われていません。同様の質問への回答は、IComparable を実装する必要があることを示唆していますが、実装すると列にまったく表示されなくなりました。
私は何を間違えましたか?
アップデート:
DevExpressで尋ねた...
c# - IComparable.CompareToはSortでnullと比較します
と呼ばれるIComparable<T>.CompareTo
タイプの助けを借りてリストをソートしたいと思います。私が書いたT
Path
驚いたことに、この方法
クラスから
から呼び出されSort()
ますother==null
。さらに驚いたことに、最初のコードブロックで、2番目の例外がスローさshortest
れます。これは、並べ替えの前ではなく、並べ替えの後にnull値が含まれていることを意味します。
c# - IComparable を使用したオブジェクトの並べ替え
IComparable
カスタムオブジェクトにインターフェースを実装して、List.Sort()
アルファベット順にソートできるようにしようとしています。
私のオブジェクトに_name
は、文字列型であるというフィールドがあり、それに基づいてソートしたいと考えています。これが私が実装した方法です:
私が何か間違ったことをしたのか、それとも単に文字列CompareTo
が機能するのかはわかりませんが、基本的に私のリストは次のようにソートされました:
- アップグレードのテスト
- テスト アップグレード 10
- テスト アップグレード 11
- テスト アップグレード 12
- テスト アップグレード 13
- テスト アップグレード 14
- テスト アップグレード 15
- テスト アップグレード 2
- テスト アップグレード 3
- テスト アップグレード 4
- テスト アップグレード 5
私はそれらを次のようにソートしたい:
- アップグレードのテスト
- テスト アップグレード 2
- テスト アップグレード 3
- ...等
c# - リストIEnumerableへ
暗黙的にintをIComparableにキャストできます。リストまたは配列をIEnumerableにキャストすることもできます。
しかし、なぜリストをIEnumerableに暗黙的にキャストできないのでしょうか。
これを.netFramework4.5とVisualStudio2012Ultimateでテストしました。
テストするコード:
c# - Sort() および CompareTo() メソッドの内部動作
CompareTo()
メソッドが内部でどのように機能するかを理解しようとしてきましたが、失敗しました。このサイトを検索していくつかの投稿を読みましたが、この件に関して MSDN で見るべきものはすべて見たと思いますが、理解できないようです。MSDN の例:
これは、CompareTo()
メソッドの実装の MSDN の例です。私はこれを理解しています、私はインターフェースがどのように機能するかを理解しています。私が正しく理解していれば、メソッドIComparable
を使用するときにこれが呼び出されます。ArrayList.Sort()
私が理解していないのは、プログラムがCompareTo(object obj)
メソッドの引数を渡すのはいつですか? 言い換えれば、Sort()
メソッドはどのように機能しますか? つまり、このコードは温度のインスタンスを温度の別のインスタンスと比較していますが、比較を行うために、プログラムはいつ、またはどのようにして 2 番目の温度インスタンスを取得するのでしょうか? 私の質問が理にかなっていることを願っています。
プロセスを画面に出力しようとしたCompareTo()
ので、出力をリバースエンジニアリングできるかもしれませんが、さらに混乱しました。
編集:一歩一歩進んだら、自分自身をよりよく説明できるかもしれません。3 つの温度オブジェクトがあるとします: 34、45、21ArrayList
です。を呼び出すArrayList.Sort()
と、CompareTo()
メソッドは のように呼び出され34.CompareTo(45)
ますか? そして45.CompareTo(21)
?返される整数は、最初の比較では 1 で、2 番目の比較では -1 でしょうか? CompareTo()
また、obj (パラメーター) が null の場合にのみ 1 を返すようにメソッドを定義した場合、これらの整数はどのように返されるのでしょうか? -1 または 0 を返すものは何も定義していません。既に実装されているメソッドを実装しているようなものです。CompareTo()
-1、0、および 1 を返すように定義済みのメソッドを定義する。