问题标签 [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.

0 投票
5 回答
1773 浏览

c# - 为什么我在 C# 中的 List.Sort 方法颠倒了我的列表顺序?

我有一个通用列表中的项目列表:

  • A1(排序索引 1)
  • A2(排序索引 2)
  • B1(排序索引 3)
  • B2(排序索引 3)
  • B3(排序索引 3)

它们上的比较器采用以下形式:

当我对项目列表执行 List.Sort() 时,我得到以下顺序:

  • A1
  • A2
  • B3
  • B2
  • B1

它显然在排序索引的顺序正确的意义上起作用,但我真的不希望它重新排序“B”项。

我可以对比较器进行任何调整来解决这个问题吗?

0 投票
4 回答
830 浏览

c# - 在 WCF 中序列化时不包括 IComparable

我有一个我要在服务器端填写的列表。它是一个“用户”列表,它实现了 IComparable。现在当 WCF 序列化数据时,我猜它不包括 CompareTo 方法。这是我的对象类:

是否可以让 CompareTo 方法到达客户端?放置 [DataMember] 不是我尝试过的解决方案(我知道......)。

提前致谢。

0 投票
3 回答
14283 浏览

c# - 对 2D 点列表进行排序(首先按 X,然后按 Y)

我正在尝试先按 x 坐标然后按 y 坐标对 2D 点列表进行排序。我实现了 IComparer 接口如下:

然后按如下方式调用我的排序:

由于某种原因,该列表没有排序。肯定是一些非常简单和愚蠢的事情,但坚持了很长一段时间......TIA

0 投票
4 回答
1661 浏览

c# - 实现通用 IEnumerator 和 IComparable 的问题

我正在研究 AVL 树。树本身似乎正在工作,但我需要一个迭代器来遍历树的值。因此,我尝试实现 IEnumerator 交互。不幸的是,我在实现 IEnumerator 和 IComparable 时遇到编译时错误。首先是代码,然后是错误。

VS2008 给出的错误:错误 1 ​​类型“T”不能用作泛型类型或方法“Opdr2_AvlTreeTest_Final.AvlTreeNode”中的类型参数“T”。没有从“T”到“System.IComparable”的装箱转换或类型参数转换。

此错误在以下几行中给出:

现在我还没有包含树和节点逻辑。我有人认为有必要解决这个问题,就这么说吧!

谢谢!

0 投票
1 回答
641 浏览

silverlight - 您将如何使 List<> 具有可比性?

我正在使用 Telerik GridView,并且在尝试对由 List<> 组成的列进行排序时遇到问题。在这个论坛条目中,Telerik 团队指出,无论 Silverlight 版本如何,网格都可以对 IComparable 进行排序和分组/过滤 IEquatable<>。在下面的 xaml 中,您将看到网格中的四列。SVOs 专栏是我遇到的问题。SVO 绑定到 List(ServiceOrder_DataViewModel)。由于 List 没有实现 IComparable 或 IEquatable,因此我无法对该列进行排序或分组/过滤。所以,我的问题是:如何创建一个实现 IComparable 和 IEquatable 的新 List 对象?我们确实有能够实现 IComparable 和 IEquatable 的逻辑,我只是​​不确定如何实现它。

0 投票
1 回答
3415 浏览

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)中获取具有最大静态值的叶子,我认为实现CompareToorEquals会让 List.max 对它们起作用,对吗?我编写这样的东西:

我以这种方式安排功能的问题是:

1)模式鉴别器'LeafP'未定义(LeafP红色下划线)

2) (77,39):错误 FS0039:未定义值或构造函数“mycompare”,当我尝试按 ALT ENTER 时,此消息出现在我的 F# Interactive 中。位置 {77,39} 对应于 mycompare 调用的开始(在 GetHashCode 中)。

我做错了什么?我能做些什么更好?

非常感谢,

佩德罗·杜索

编辑 3 - 已解决

是的!我最终管理您的工作答案!

最终代码在这里:

感谢您的反馈!

佩德罗·杜索

0 投票
2 回答
7139 浏览

c# - 与 IComparable 一起使用的可空泛型类型。是否可以?

我正在尝试创建一个简单的 Clamp(这样我就可以绑定任何可比较的值......主要用于 int、double 等数字类型)

问题是如果我执行以下操作会出现错误,但根据 MSDN IComparable 的 CompareTo 应该能够处理空值。
引用:“根据定义,任何对象比较大于空,两个空引用比较彼此相等。”

0 投票
2 回答
336 浏览

vb.net - IComparable - 调用不同的类型?

我有一个用于处理事务的 DTO。为了确保它以正确的顺序处理,我使用 iComparable 并对 DTO 的 List(of T) 进行排序。这很好用。但是我刚刚得到另一个要求,客户希望以不同的顺序输出......有没有办法让我对同一个对象有两种不同的排序,或者我是否需要复制当前类,将输出另存为该类型的新列表并使用该对象的新方式进行排序?似乎是一种糟糕的方法,但找不到任何可以让我这样做的方法。

0 投票
1 回答
388 浏览

c# - 在 C# 中对 IComparable 对象性能进行排序

我设计了一个类,它基本上只是一个存储大量数据属性的对象。我已经在课堂上实现了 IComparable。类的对象被实例化并存储在列表中。

对象的某些字段决定了我对哪些字段进行排序(存在层次结构),因此层次结构是:

  • 1) 名称(在实例化时定义)
  • 2)产品(在实例化时定义)
  • 3)NetGroup(定义后实例化,在初始创建列表后,我迭代回来,执行计算,并设置组。)
  • 4) 日期(在实例化时定义)

有几个标志(布尔字段)确定是否在排序层次结构中使用上述两个。

  • 5) AllowProductGroupingInd(在实例化时定义)
  • 6) AllowDateGroupingInd(在实例化时定义)

在相对较小的列表(n = 1000)上排序的性能很差,一般在 500 毫秒左右。

我不确定我是否正确实施了比较器。我的方法如下所示:

我正在使用 C# 3.0,所以我不能使用 LINQ。这是我想要完成的合理实现吗?有没有更优雅的解决方案?在我看来,我可能使用了太多条件,但我不确定如何解决这个问题。

0 投票
6 回答
9856 浏览

.net - IStructuralEquatable 和 IStructuralComparable 解决了什么问题?

我注意到.NET 4 中添加了这两个接口和几个相关的类。它们对我来说似乎有点多余;我已经阅读了几篇关于它们的博客,但我仍然无法弄清楚它们解决了哪些在 .NET 4 之前很棘手的问题。

IStructuralEquatable和有什么用IStructuralComparable