问题标签 [compareto]

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 投票
1 回答
570 浏览

.net - 使用 CompareTo 比较 .Net 版本实例无法按预期工作

.Net 中的 Version 类没有像我期望的那样实现 CompareTo 接口,它似乎以字母数字方式处理比较,而不是比较四个数字。也许不是错误,而是“功能”。

谁能解释一下为什么比较(以及标准的 <、= 和 > 运算符)不能像我在下面所期望的那样工作?

我知道人们已经为此做了自己的手动解决方法,我想知道这是设计使然还是应该起作用,我可能会做一些愚蠢的事情。

提前致谢

瑞安

更新:我做了一些微妙的愚蠢的事情,并将它们视为 IP 地址。例如; 1.1.3023.5364 大于 1.1.5 但 1.1.3023.5364 小于 1.1.5000。

0 投票
1 回答
447 浏览

c# - 比较通用字段

我有一些通用类型,如下所示:

这些理论上应该能够将自己与相同类型的其他值进行比较,以便我可以编写以下类型的代码:

不幸的是,我的代码中有一个错误,然后问题就变成了如何正确地做到这一点。

该错误与我的 CompareTo> 实现有关,它基本上如下所示:

HelperMethods.CompareTwoFields 看起来像这样:

最后一个 if 语句有一些我现在用来修复错误的东西,但这是正确的吗?

基本上,我如何比较两个 Type 对象?除了将它们转换为字符串并进行比较之外,这些是否有有意义的比较?

0 投票
17 回答
186303 浏览

java - 如何简化 null 安全的 compareTo() 实现?

我正在compareTo()为这样的简单类实现方法(以便能够使用Collections.sort()Java 平台提供的其他好东西):

我希望这些对象的自然排序是:1)按名称排序,2)如果名称相同,则按值排序;两种比较都应该不区分大小写。对于这两个字段,空值是完全可以接受的,因此compareTo在这些情况下不能中断。

想到的解决方案如下(我在这里使用“保护条款”,而其他人可能更喜欢单个返回点,但这不是重点):

这可以完成工作,但我对这段代码并不完全满意。诚然,它不是复杂,但相当冗长乏味。

问题是,您将如何减少冗长(同时保留功能)?如果有帮助,请随意参考 Java 标准库或 Apache Commons。使这(一点)更简单的唯一选择是实现我自己的“NullSafeStringComparator”,并将其应用于比较两个字段吗?

编辑 1-3: Eddie 是对的;修复了上面的“两个名字都为空”的情况

关于接受的答案

我在 2009 年问过这个问题,当然是在 Java 1.6 上,当时Eddie 的纯 JDK 解决方案是我首选的公认答案。直到现在(2017 年),我才开始改变它。

还有第 3 方库解决方案——一个 2009 Apache Commons Collections 一个和一个 2013 Guava 一个,都是我发布的——我在某个时间点确实更喜欢它们。

我现在将Lukasz Wiktor的干净Java 8 解决方案作为公认的答案。如果在 Java 8 上,这绝对应该是首选,而如今几乎所有项目都应该使用 Java 8。

0 投票
5 回答
71754 浏览

java - 为什么 compareTo 在 Java 中的 Enum final 上?

Java 中的枚举实现了该Comparable接口。重写ComparablecompareTo方法会很好,但在这里它被标记为最终的。Enum's上的默认自然顺序compareTo是列出的顺序。

有谁知道为什么 Java 枚举有这个限制?

0 投票
7 回答
2250 浏览

java - 在 Java 中,我应该使用什么来首先返回最大元素的 PriorityQueue?

Java 的PriorityQueue将最小的元素放在列表的头部,但是我需要它将最大的元素放在头部。获得这样的优先级队列的最佳方法是什么。

由于我编写了存储在此队列中的类,因此我可以简单地反转 的结果compareTo,它不在此队列之外使用。

但是,我喜欢使代码准确地表示我正在建模的内容,我想做的是首先获得最大的,所以代码应该这样说,而不是首先使用不寻常的最少定义。

[编辑]只是快速感谢大家,Comparator 听起来就像我自学如何编写一个时所需要的。

0 投票
7 回答
20533 浏览

java - 用于字符串和整数参数的 Java compareTo

我正在实现冒泡排序算法,我希望它能够同时接受IntegerString参数。我将所有输入转换为字符串,并使用该compareTo方法将转换为字符串的整数与字符串进行比较。compareTo用于比较强制转换的整数时,我得到的答案不正确。我究竟做错了什么?

0 投票
7 回答
2277 浏览

java - Java 的 compareTo 方法的实际应用是什么?

在我正在学习的Java教科书中,它说这使用“字典顺序”来返回一个整数。我了解它是如何工作的,但是在编程中使用它的具体方式是什么?

0 投票
21 回答
198029 浏览

java - compareTo() 与 equals()

在 Java中测试 's 的相等性时,String我一直使用它equals(),因为对我来说这似乎是最自然的方法。毕竟,它的名字已经说明了它打算做什么。但是,我的一位同事最近告诉我,有人教我使用compareTo() == 0而不是equals(). 这对我来说感觉不自然(因为compareTo()它是为了提供排序而不是比较相等),甚至有点危险(因为compareTo() == 0不一定在所有情况下都意味着相等,即使我知道它确实适用于String's)。

他不知道为什么教他使用compareTo()而不是equals()for String,我也找不到任何原因。这真的是个人品味问题,还是任何一种方法都有真正的理由?

0 投票
2 回答
671 浏览

java - 将节点和对象与 BST 数据结构进行比较

我收到“java.lang.string 无法转换为节点”异常。我想使用提供的 toString 方法将 localRoot 转换为字符串,然后将它们进行比较,这不会留下我需要导航 BST 的“大于”或“小于”的概念......

其中 o 是 Object 类型 localRoot 是 Node 类型 compareTo 方法需要一个 Node

0 投票
1 回答
488 浏览

c# - 相当于 C# 中的 SQL 二进制相对值测试

我试图找出这个 SQL 的等效 C#:

和这个一样吗?

如果没有,那我该如何模拟呢?