问题标签 [comparator]

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 回答
2082 浏览

java - 为什么 String equals() 返回 false (涉及自定义比较器)?

我构建了一个非常简单的自定义比较器,我将它与 TreeSet 一起使用,以便按该 TreeSet 中的长度对字符串进行排序。

(s1.equals(s2))即使两个字符串 s1 和 s2 包含相同的值,我也很难找到返回 false 的原因。

Eclipse“变量视图”显示两个字符串中的字母相同,但“id”不同,我想这就是equals返回False的原因。顺便说一句,那id=" "代表什么?它是某种指向 String 对象数据的指针吗?

现在这里是我使用这个自定义比较器的地方:

substring()我用该方法构建的几个字符串填充组合。

由于前面提到的问题,组合包含重复项。

当我为此 TreeSet 设置 NO 自定义比较器时,不再有重复项(这就是我想要的),但它按字母顺序排序,这是正常的,但不是我的目的。

0 投票
3 回答
154 浏览

java - 最少的代码,缩短表达

给出以下参数:

我想要这个版本的最少代码:

需要修改什么?

0 投票
1 回答
763 浏览

mips - MIPS 寄存器比较器

给定 MIPS 中的两个输入寄存器:$t0, $t1

如果不使用分支,您如何确定哪个更大?

0 投票
1 回答
1071 浏览

java - 没有警告的通用接口比较器

鉴于:

这种组合有效,但会发出有关原始类型的警告。我尝试了各种添加类型参数的方法,但我尝试的每种组合都会破坏代码。

0 投票
4 回答
12112 浏览

c++ - 使用比较器设置 STL

检查以下代码:

输出是:

这让我感到震惊。我认为(并期待)输出将是:

在执行之前leagues.insert("ALeague");leagues包含"aLeague""BLeague"。我的问题是,在执行leagues.insert("ALeague");时机器为什么要处理"ALeague" == "aleague"?根据我的理解, 中没有元素"ALeague"leagues所以"ALeague"应该插入到leagues. 比较器应确定放置位置"ALeague"

提前致谢。

PS:请不要因为我使用 C 风格演员而打我。:P 我懒得打字了static_cast

0 投票
2 回答
180854 浏览

java - Java:可比与比较器

可能的重复:
compare() 和 compareTo()
之间的区别 Java:实现 Comparable 和 Comparator 有什么区别?

Comparable 和 Comparator 之间的主要区别是什么。

在什么情况下哪个比另一个更受欢迎?

谢谢

更新 - 与示例的良好链接!

http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html

0 投票
2 回答
169 浏览

java - 使用两个比较器的最佳方法是什么?

我目前有以下结构用于在一段时间内获取 OHLC 数据

在 marketDataItem 或 marketDataGroup 中有比较器是更好/更好/更快/更少的内存吗?

0 投票
5 回答
17423 浏览

java - Java如何对Point对象的ArrayList进行排序

我正在使用点类来管理 (x,y) 坐标列表,我需要按 X 的顺序对它们进行排序。

我在线阅读以创建一个实现 Comparator 的新类 PointCompare,但是我不确定它是如何工作的,因此我在 sortByXCoordinates 方法中有一个编译器错误。

非常感谢您的帮助,欢迎提出任何意见,在此先感谢。这是我的一些代码:

0 投票
10 回答
96845 浏览

java - 双精度型比较器

我写了以下代码:

如果我说有两个双数,3.2 - 3.1,则差应该是0.1。但是,当我将数字转换为 int 时,差异最终为0,这是不正确的。

因此,我需要compare()返回一个双精度,而不是一个整数。问题是,我的getX领域是双重的。我怎么解决这个问题?

0 投票
11 回答
24011 浏览

java - 比较器和 equals()

假设我需要TreeSet使用一些域逻辑排序的元素。按照这种逻辑,一些不相等的元素的顺序无关紧要,因此 compare 方法可以返回 0,但在这种情况下,我无法将它们放入TreeSet.

所以,问题:像这样的代码我会有什么缺点:

更新

好的。如果它应该始终是方法之间的一致性equals()hashcode()并且compareTo()正如@SPFloyd-seanizer 和其他人所说的那样。如果我删除Comparable接口并移动这个逻辑会更好甚至更好Comparator(我可以在不破坏封装的情况下做到这一点)?所以它将是:

更新 2

System.identityHashCode(x)hashCode()我不需要稳定排序更好吗?