问题标签 [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 中,您将看到网格中的四列。SVOs 专栏是我遇到的问题。SVO 绑定到 List(ServiceOrder_DataViewModel)。由于 List 没有实现 IComparable 或 IEquatable,因此我无法对该列进行排序或分组/过滤。所以,我的问题是:如何创建一个实现 IComparable 和 IEquatable 的新 List 对象?我们确实有能够实现 IComparable 和 IEquatable 的逻辑,我只是不确定如何实现它。
f# - 在 F# 元组中使用 CustomComparison 和 CustomEquality 实现自定义比较
我来这里是为了问一个特定的话题——我真的在网上找到了一些关于这个的信息。我正在实现 F# 版本的 Minimax 算法。我现在遇到的问题是我想比较我的树的叶子(下面的数据结构)。搜索 VS 给我的错误,我得到了这样的结果:
我曾经拥有的树类型:
以及实施 IComparable 的诱惑
最后,我只想通过其静态值(在其他函数中计算)获取 LeafP 列表的最大值(和最小值)。
上面的代码编译。但是用这个测试:
我在 GetHashCode 的覆盖中的“| :? TreeOfPosition as y -> compare (x) (y)”行中得到了 System.StackOverflowException。
我在 hubfs.net ( http://cs.hubfs.net/forums/thread/15891.aspx ) 中有一个线程,我正在讨论我的 Minimax。在这里你可以找到我最新的代码(http://www.inf.ufrgs.br/~pmdusso/works/Functional_Implementation_Minimax_FSharp.htm)
提前致谢,
佩德罗·杜索
好吧,我非常清楚这个想法,但我无法让它发挥作用。记住我想从叶子列表(“List.max”:P)中获取具有最大静态值的叶子,我认为实现CompareTo
orEquals
会让 List.max 对它们起作用,对吗?我编写这样的东西:
我以这种方式安排功能的问题是:
1)模式鉴别器'LeafP'未定义(LeafP红色下划线)
2) (77,39):错误 FS0039:未定义值或构造函数“mycompare”,当我尝试按 ALT ENTER 时,此消息出现在我的 F# Interactive 中。位置 {77,39} 对应于 mycompare 调用的开始(在 GetHashCode 中)。
我做错了什么?我能做些什么更好?
非常感谢,
佩德罗·杜索
编辑 3 - 已解决
是的!我最终管理您的工作答案!
最终代码在这里:
感谢您的反馈!
佩德罗·杜索
c# - 与 IComparable 一起使用的可空泛型类型。是否可以?
我正在尝试创建一个简单的 Clamp(这样我就可以绑定任何可比较的值......主要用于 int、double 等数字类型)
问题是如果我执行以下操作会出现错误,但根据 MSDN IComparable 的 CompareTo 应该能够处理空值。
引用:“根据定义,任何对象比较大于空,两个空引用比较彼此相等。”
vb.net - IComparable - 调用不同的类型?
我有一个用于处理事务的 DTO。为了确保它以正确的顺序处理,我使用 iComparable 并对 DTO 的 List(of T) 进行排序。这很好用。但是我刚刚得到另一个要求,客户希望以不同的顺序输出......有没有办法让我对同一个对象有两种不同的排序,或者我是否需要复制当前类,将输出另存为该类型的新列表并使用该对象的新方式进行排序?似乎是一种糟糕的方法,但找不到任何可以让我这样做的方法。
c# - 在 C# 中对 IComparable 对象性能进行排序
我设计了一个类,它基本上只是一个存储大量数据属性的对象。我已经在课堂上实现了 IComparable。类的对象被实例化并存储在列表中。
对象的某些字段决定了我对哪些字段进行排序(存在层次结构),因此层次结构是:
- 1) 名称(在实例化时定义)
- 2)产品(在实例化时定义)
- 3)NetGroup(定义后实例化,在初始创建列表后,我迭代回来,执行计算,并设置组。)
- 4) 日期(在实例化时定义)
有几个标志(布尔字段)确定是否在排序层次结构中使用上述两个。
- 5) AllowProductGroupingInd(在实例化时定义)
- 6) AllowDateGroupingInd(在实例化时定义)
在相对较小的列表(n = 1000)上排序的性能很差,一般在 500 毫秒左右。
我不确定我是否正确实施了比较器。我的方法如下所示:
我正在使用 C# 3.0,所以我不能使用 LINQ。这是我想要完成的合理实现吗?有没有更优雅的解决方案?在我看来,我可能使用了太多条件,但我不确定如何解决这个问题。
.net - IStructuralEquatable 和 IStructuralComparable 解决了什么问题?
我注意到.NET 4 中添加了这两个接口和几个相关的类。它们对我来说似乎有点多余;我已经阅读了几篇关于它们的博客,但我仍然无法弄清楚它们解决了哪些在 .NET 4 之前很棘手的问题。
IStructuralEquatable
和有什么用IStructuralComparable
?