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

java - 什么时候类应该是 Comparable 和/或 Comparator?

我见过同时实现ComparableComparator的类。这是什么意思?为什么我要使用其中一个?

0 投票
7 回答
41407 浏览

javascript - Javascript 的 sort() 是如何工作的?

以下代码如何按数字顺序对该数组进行排序?

我知道如果计算的结果是......

小于 0:“a”被排序为比“b”低的索引。
零: “a”和“b”被认为是相等的,不进行排序。
大于 0: “b”被排序为比“a”低的索引。

排序过程中是否多次调用数组排序回调函数?

如果是这样,我想知道每次将哪两个数字传递给函数。我假设它首先需要“25”(a)和“8”(b),然后是“7”(a)和“41”(b),所以:

25(a) - 8(b) = 17(大于零,因此将“b”排序为比“a”低的索引):8, 25

7(a) - 41(b) = -34(小于零,因此将“a”排序为低于“b”的索引:7, 41

那么这两组数字是如何相互排序的呢?

请帮助一个苦苦挣扎的新手!

0 投票
13 回答
62657 浏览

sql - SQL中的“LIKE”和“=”有什么区别?

有什么区别:

0 投票
5 回答
8141 浏览

java - Java SortedSet + Comparator,与equals()问题的一致性

我想要一个按集合大小排序的集合的 SortedSet(在这种情况下是集合本身,但不一定是一般情况)。这似乎违反了让 Comparator 与 equals() 一致的禁令——即,两个集合可能不相等(通过具有不同的元素),但比较相同的值(因为它们具有相同数量的元素)。

从概念上讲,我也可以使用比较器方法对大小相等的集合进行排序,但是使用排序不会利用这一点,并且没有真正有用+直观的方法来比较大小相等的集合(至少,在我的特殊情况下),所以这似乎是一种浪费。

这种不一致的情况似乎是个问题吗?

0 投票
2 回答
5798 浏览

java - 使用 Collections.sort()制作用于对通用列表进行排序的 Comparator 对象

我正在尝试为实现 MyInterface 的任何类的对象列表实现通用排序实用程序方法。每个 Java API ( http://java.sun.com/javase/6/docs/api/java/util/Collections.html ),Collections.sort() 方法签名是:

我不确定带有通配符参数的列表是否可以替换“普通”参数化列表,但我尝试了:

并得到一个编译时错误,

因此,我将其更改为:

它编译并工作。有什么好的解释吗?

0 投票
2 回答
37485 浏览

c++ - 自定义类上的 STL 优先级队列

我很难让我的优先级队列识别它应该排序的参数。我在自定义类中重载了小于运算符,但它似乎没有使用它。以下是相关代码:

节点.h

节点.cpp

getTotalCost() 返回一个整数

主文件

我错过了什么和/或做错了什么?

0 投票
2 回答
1512 浏览

java - Java:TreeSet 和 LinkedList 的问题

我有一个未排序的链表。为了对其进行排序,我想我会将这些值放入带有比较器的 TreeSet 中,然后将这些值作为新的链表返回。然而,它失败了。

比较器:

排序功能:

测试这些值时,一切似乎仍处于插入顺序。

0 投票
5 回答
738 浏览

java - 为我的工作面试代码示例编写比较器需要帮助

我需要帮助来编写一个比较器:-

我想要这个输出:-

但我得到以下输出: -

我如何对姓氏进行排序,保持列表的顺序不变..我的意思是我想输出女性首先按姓氏排序,然后男性按姓氏排序......请帮帮我..

这是我使用性别比较器后使用的比较器:-

0 投票
12 回答
2930 浏览

java - 如何使用 Comparator 比较空值?

我有几个Comparators - 一个代表Dates,一个代表小数,一个代表百分比,等等。

起初我的十进制比较器看起来像这样:

生活很简单。当然,这不能处理字符串不可解析的情况。所以我改进了compare()

生活变得更好了。测试感觉更可靠。然而,我的代码审查员指出,“ nulls 呢?”

太好了,所以现在我必须重复上述NullPointerException内容或在方法主体前添加:

这个方法很大。最糟糕的是,我需要用其他三个比较不同类型的字符串的类重复这种模式,并且在解析时可能会引发其他三个异常。

我不是 Java 专家。有没有比复制和粘贴更清洁、更整洁的解决方案?只要记录在案,我是否应该以缺乏复杂性为代价换取正确性?


更新:有些人认为Comparator处理null值不是 ' 的工作。由于排序结果显示给用户,我确实希望对空值进行一致的排序。

0 投票
7 回答
6290 浏览

java - Java,如何添加“比较器”类来增加代码的可重用性

前言:我代表一个朋友发这个(他显然很害羞自己发),我浏览了相关的问题,我似乎没有找到任何重复的..但请注意我不知道完全是Java,所以如果这是重复的,我提前道歉!

这是代码的一部分:

我的朋友想要实现“addEsame”,以便最大限度地提高代码的可重用性,特别是他希望能够通过添加一个新类(我相信比较器类)来改变列表的排序方式(现在它是按名称排序的) ? 或者至少我会在 C++ 中这样做)。

谢谢!