問題タブ [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# - C# の List.Sort メソッドがリストの順序を逆にするのはなぜですか?
一般的なリストにアイテムのリストがあります:
- A1 (ソート インデックス 1)
- A2 (ソート インデックス 2)
- B1 (ソート インデックス 3)
- B2 (ソート インデックス 3)
- B3 (ソート インデックス 3)
それらのコンパレータは次の形式を取ります。
アイテムのリストで List.Sort() を実行すると、次の順序が得られます。
- A1
- A2
- B3
- B2
- B1
並べ替えインデックスが正しい順序になっているという意味では明らかに機能していますが、「B」項目の順序を変更したくありません。
これを修正するためにコンパレーターを微調整することはできますか?
c# - WCFでシリアル化する場合、IComparableは含まれません
サーバー側で入力しているリストがあります。これは、IComparableを実装する「ユーザー」のリストです。WCFがデータをシリアル化しているとき、CompareToメソッドは含まれていないと思います。これは私のオブジェクトクラスです:
CompareToメソッドを取得してクライアントに到達することは可能ですか?[DataMember]を置くことは、私が試した解決策ではありません(私は知っています...)。
前もって感謝します。
c# - 2Dポイントリストを並べ替えます(最初にX、次にYで並べ替えます)
最初にx座標で、次にy座標で2Dポイントのリストを並べ替えようとしています。IComparerインターフェイスを次のように実装しました。
そして、次のように私の並べ替えを呼び出します。
何らかの理由でリストがソートされません。確かに非常に単純でばかげたものですが、かなり長い間これに固執していました.... TIA
c# - ジェネリック IEnumerator および IComparable の実装に関する問題
私はAVLツリーに取り組んでいます。ツリー自体は機能しているようですが、ツリーの値を調べるにはイテレータが必要です。したがって、IEnumerator インターフェイスを実装しようとしました。残念ながら、IEnumerator と IComparable を実装するとコンパイル エラーが発生します。最初にコード、その下にエラー。
VS2008 によって表示されるエラー: エラー 1 型 'T' は、ジェネリック型またはメソッド 'Opdr2_AvlTreeTest_Final.AvlTreeNode' の型パラメーター 'T' として使用できません。'T' から 'System.IComparable' へのボックス変換や型パラメーターの変換はありません。
このエラーは、次の行に表示されます。
今のところ、ツリーとノードのロジックは含めていません。この問題を解決する必要があると思う人は、ただそう言ってください!
どうも!
silverlight - List<> を比較可能にする方法は?
私は Telerik GridViewを使用しており、List<> で構成された列をソートしようとすると問題が発生します。このフォーラム エントリで、Telerik チームは、Silverlight のバージョンに関係なく、グリッドは IComparable をソートし、IEquatable<> をグループ化/フィルター処理できると述べています。以下の xaml には、グリッドにある 4 つの列が表示されます。SVO 列は、私が問題を抱えている列です。SVO は List(ServiceOrder_DataViewModel) にバインドされます。List は IComparable または IEquatable を実装していないため、この列を並べ替えたり、グループ化/フィルター処理したりすることはできません。私の質問は、IComparable と IEquatable を実装する新しい List オブジェクトを作成するにはどうすればよいですか? IComparable と IEquatable を実装できるロジックはありますが、実装方法がわかりません。
f# - F#タプルでCustomComparisonおよびCustomEqualityとのカスタム比較を実装する
私は特定のトピックを尋ねるためにここにいます-私は実際にこれについての情報をウェブ上でほとんど見つけませんでした。MinimaxアルゴリズムのF#バージョンを実装しています。私が今抱えている問題は、ツリーのリーフ(以下のデータ構造)を比較したいということです。VSが私にくれたエラーを検索して、私は次のようなものにたどり着きました。
私が持っていた木のタイプ:
そしてIComparableを実装するための誘惑
最後に、LeafPのリストの最大値(および最小値)を静的な値で取得したいだけです(他の関数で計算します)。
上記のコードはコンパイルされます。ただし、これでテストします。
GetHashCodeのオーバーライドの"|:? TreeOfPosition as y-> compare(x)(y)"行にSystem.StackOverflowExceptionが発生しました。
ミニマックスについて話し合っているので、hubfs.net(http://cs.hubfs.net/forums/thread/15891.aspx )にスレッドがあります。ここに私の最新のコードがあります(http://www.inf.ufrgs.br/~pmdusso/works/Functional_Implementation_Minimax_FSharp.htm)
前もって感謝します、
ペドロ・デュッソ
ええと、私はその考えを非常にはっきりと理解しましたが、それを機能させることはできません。リーフのリスト(「List.max」:P)から最大の静的値を持つリーフを取得したいことを思い出して、CompareTo
またはEquals
を実装すると、List.maxがそれらで機能するようになると思います。私はこのようなものを構成します:
私がこのように関数を配置している問題は次のとおりです。
1)パターン弁別器「LeafP」が定義されていません(LeafPに赤い下線が引かれています)
2)(77,39):エラーFS0039:値またはコンストラクター'mycompare'が定義されていません。ALTENTERを実行しようとすると、このメッセージがF#インタラクティブに表示されます。位置{77,39}は、(GetHashCode内の)mycompare呼び出しの開始に対応します。
私が間違っているのは何ですか?何を改善できますか?
どうもありがとう、
ペドロ・デュッソ
編集3-解決済み
はい!私はあなたの答えを最終的に機能させるために管理します!
最終的なコードは次のとおりです。
フィードバックをお寄せいただきありがとうございます!
ペドロ・デュッソ
c# - IComparable で使用される Null 許容ジェネリック型。出来ますか?
私は単純なクランプを作成しようとしています(比較可能なものの値をバインドできるように...主にint、doubleなどの数値型の場合)
問題は、次のようにするとエラーが発生することですが、MSDN によると、 IComparable の CompareTo は null 値を処理できるはずです。
引用: 「定義上、すべてのオブジェクトは null より大きいと比較され、2 つの null 参照は互いに等しいと比較されます。」
vb.net - IComparable - 異なる種類を呼び出す?
トランザクションを処理するために使用している DTO があります。正しい順序で処理されていることを確認するために、iComparable を使用し、DTO の List(of T) を並べ替えています。それはうまくいきます。ただし、顧客が出力を別の順序で望んでいるという別の要件がありました...同じオブジェクトに対して2つの異なる並べ替えを許可する方法はありますか、または現在のクラスをコピーして出力を保存する必要がありますか?そのオブジェクトの新しい方法を使用して、そのタイプと並べ替えの新しいリスト?それを行うにはひどい方法のように思えますが、それを可能にするものを見つけることができません。
c# - C# での IComparable オブジェクトのパフォーマンスの並べ替え
基本的に、データの多数のプロパティを格納するオブジェクトにすぎないクラスを設計しました。クラスに IComparable を実装しました。クラスのオブジェクトはインスタンス化され、List に格納されます。
オブジェクトの特定のフィールドがどのフィールドでソートするかを決定するという複雑さのレベルが追加されています (階層があります)。階層は次のようになります。
- 1) 名前 (インスタンス化時に定義)
- 2) 製品 (インスタンス化時に定義)
- 3) NetGroup (インスタンス化後に定義。リストを最初に作成した後、反復処理を繰り返し、計算を実行し、グループを設定します。)
- 4) 日付 (インスタンス化時に定義)
上記の 2 つがソート階層で使用されているかどうかを決定するフラグ (bool フィールド) がいくつかあります。
- 5) AllowProductGroupingInd (インスタンス化時に定義)
- 6) AllowDateGroupingInd (インスタンス化時に定義)
比較的小さなリスト (n = 1000) での並べ替えのパフォーマンスは低く、一般に約 500 ミリ秒です。
比較子を適切に実装したかどうかはわかりません。私の方法は次のようになります。
C# 3.0 を使用しているため、LINQ を使用できません。これは私が達成したいことの合理的な実装ですか? よりエレガントなソリューションはありますか?あまりにも多くの条件を使用しているように思えますが、それを回避する方法がわかりません。
.net - IStructuralEquatable と IStructuralComparable はどのような問題を解決しますか?
これら 2 つのインターフェイスと、関連するいくつかのクラスが .NET 4 に追加されていることに気付きました。それらに関するいくつかのブログを読んだことがありますが、.NET 4 より前では困難だった、どのような問題を解決するのかまだわかりません。
IStructuralEquatable
とは何に使うのIStructuralComparable
ですか?