问题标签 [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 投票
2 回答
8516 浏览

c# - Java比较器覆盖c#中的等效项

我想将以下类从 java 转换为 C#:

0 投票
3 回答
3536 浏览

java - 扩展可比较的泛型

我正在用 Java 开发一个基于模板的类,它实现了各种树结构(例如标准二叉树、红黑树或 B-Tree)。我的想法是让它像 Java Collections 中的各种列表一样完成。那是一个接口类,然后由指定的树扩展。但是,我遇到了一个奇怪的问题:

看起来Java认为对象是不同类型的......如何解决这个问题?

这是我的一段代码:

树.java

BSTree.java

编辑:感谢您的建议,我能够将错误数量减少到 5 个。它们是:javac -d ../bin *.java

现在,我的代码有它Node<T>并且Tree<T>缺少它。但是还有什么问题?

0 投票
1 回答
382 浏览

c# - 有没有办法消除 IComparable运算符重载而不重复大量代码?

我有一堆实现IComparable<T>. 因为这些类型实现了该接口,所以提供以下重载是有意义的:

这是大量重复的代码。是否有一些方法可以创建一个抽象类或其他东西(例如 C++'s std::rel_ops),这样可以更容易地实现这些?

0 投票
3 回答
818 浏览

c# - 如何在 C# 中处理接受 IComparable 的通用方法的 double.NaN

我有一个通用的GetMinimum方法。它接受 IComparable 类型的数组(所以它可能是string[]or double[])。在double[]我如何实现此方法以忽略double.NaN值的情况下?(我正在寻找好的做法)

当我通过这个数组

它返回 double.NaN!

0 投票
3 回答
2463 浏览

c# - double.NaN 和 double.NegativeInfinity 的 CompareTo 行为

我在 C# (.Net 4) 中进行了一些统计操作,double[]然后我发现CompareTo方法和double.NaN. 当我尝试这段代码时:

这意味着double.NaNdouble.NegativeInfinity! 谁能解释为什么会这样?

0 投票
2 回答
945 浏览

c# - IComparable 需要对列进行排序

我的 DevExpress xtragrid 中的一列不是排序、分组或过滤。对类似问题的回答表明我需要实现 IComparable,但是当我这样做时,它根本不再显示在列中。

我做错了什么?

更新:

在DevExpress上询问...

0 投票
2 回答
1259 浏览

c# - 可比的.CompareTo 在 Sort 中与 null 进行比较

我想借助IComparable<T>.CompareTo名为. 我写TPath

令我惊讶的是,该方法

从课堂上

Sort()with调用other==null。我更惊讶的是,在第一个代码块中,抛出了第二个异常,这意味着shortest在排序之后而不是之前包含一个空值。

0 投票
5 回答
723 浏览

c# - 使用 IComparable 对对象进行排序

我正在尝试IComparable在我的自定义对象中实现接口,以便List.Sort()可以按字母顺序对它们进行排序。

我的对象有一个称为_name字符串类型的字段,我希望它以此为基础进行排序。这是我实现的方法:

不确定我是否做错了什么,或者这只是字符串的CompareTo工作方式,但基本上我的 List 是这样排序的:

  • 测试升级
  • 测试升级 10
  • 测试升级 11
  • 测试升级 12
  • 测试升级 13
  • 测试升级 14
  • 测试升级 15
  • 测试升级 2
  • 测试升级 3
  • 测试升级 4
  • 测试升级 5

我希望它们像这样排序:

  • 测试升级
  • 测试升级 2
  • 测试升级 3
  • ...ETC
0 投票
2 回答
3939 浏览

c# - 列表到 IEnumerable

我可以将 int 隐式转换为 IComparable。我还可以将列表或数组转换为 IEnumerable。

但是为什么我不能将 List 隐式转换为 IEnumerable?

我使用 .net framework 4.5 和 Visual Studio 2012 Ultimate 对此进行了测试。

测试代码:

0 投票
5 回答
4516 浏览

c# - Sort() 和 CompareTo() 方法的内部工作

我一直试图弄清楚该CompareTo()方法在内部是如何工作的,但我失败了。我搜索了这个站点并阅读了一些帖子,我想我已经在 MSDN 中看到了关于这个主题的所有内容,但我似乎不明白。一个 MSDN 示例:

这是该CompareTo()方法实现的 MSDN 示例。我理解这一点,我理解IComparable接口是如何工作的,如果我理解正确,当我使用该ArrayList.Sort()方法时会调用它。

我不明白的是:程序何时传递CompareTo(object obj)方法的参数?或者换句话说,该Sort()方法是如何工作的?我的意思是,这段代码将一个温度实例与另一个温度实例进行比较,但是程序何时或如何获取第二个温度实例以进行比较?我希望我的问题是有道理的。

我已经尝试将过程打印到屏幕上,CompareTo()所以也许我可以对输出进行逆向工程,但我更加困惑自己。

编辑:也许如果我一步一步来,我可以更好地解释自己。假设我有 3 个温度对象: 34、45、21 在一个ArrayList. 当我打电话时ArrayList.Sort(),该CompareTo()方法被称为喜欢34.CompareTo(45)吗?然后45.CompareTo(21)呢?返回的整数在第一次比较中为 1,在第二次比较中为 -1?如果我仅CompareTo()在 obj(参数)为 null 时才定义返回 1 的方法,那么这些整数是如何返回的?我没有定义任何返回 -1 或 0 的东西。就好像我正在实现一个已经实现的方法。CompareTo()在已经定义返回 -1、0 和 1的方法时定义它。