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

postgresql - PostgreSQL:不能对某些数据类型使用 DISTINCT

我有一个名为的表_sample_table_delme_data_files,其中包含一些重复项。我想将其记录复制到data_files

问题是,PostgreSQL 不能比较(或排序)box3d类型。如何提供这样的排序运算符,以便我只能将不同的值放入我的目标表中?

提前致谢,

亚当

0 投票
5 回答
34179 浏览

java - 标准api中是否存在自然比较器?

我需要一个比较器作为策略模式的一部分,它可以使用对象的自然排序或一些自定义排序。对于自然排序的情况,我写了一个简单的比较器:

看起来很简单,但我想知道是否有人知道标准 API 中的一个。我查看了 TreeMap,它没有这样的类,所以当编写该代码时,明显的答案是否定的,但也许它是后来添加的。

0 投票
3 回答
17148 浏览

java - 为什么泛型类型参数说“扩展”可比较而不是“实现”?

我试图编写从数组中删除重复元素的通用函数。

如您所见,您不能传递像 int[] 数组这样的原始类型,因为我正在通过 Comparable 接口中定义的 compareTo() 方法比较元素。

我注意到第一行(方法声明):

怎么会说“扩展可比”?

Comparable 是一个接口,那么为什么它不是“实现 Comparable”呢?这是我第一次编写通用函数,所以我对这样的细节有点困惑。(任何疑惑都会阻止我理解..)

编辑:找到与此主题相关的这篇文章。

http://www.tutorialspoint.com/java/java_generics.htm

0 投票
3 回答
645 浏览

java - 使用 arrayList 中的两个键进行搜索

我想在对象的 ArrayList 上实现快速搜索。这些对象由 int oldId、int newId 和 int inList 以及其他内容组成。

现在,我尝试使用列表中的 Collections.binarySearch 实现二进制搜索,但问题是我需要使用 oldId 和 inList 进行搜索,以从相应的对象中获取 newId。示例:我有 oldId = 9 和 inList = 1,并尝试获取已分配到其他地方的 newId。基本上映射了 oldId-newId 并将它们分组。可能有重复的 oldId,但它们必须位于不同的列表中,并且具有唯一的 newId。

您认为对这些地图对象使用哈希图会更好吗?或者,是否有解决方案(可能是对象的比较器)从 oldId 和 inList 信息中获取 newId。我也在寻找一种快速搜索算法。

非常感谢您的帮助,我很感激想法。

这是我为二进制搜索编写的比较器,但是我不知道如何在此处添加 inList 信息。

public class CompareTermId implements Comparator <MObj>{

}

0 投票
4 回答
11552 浏览

java - 如何在集合中搜索(使用比较器)

我想在一个集合中搜索而不手动迭代这些元素,但似乎没有一种方法可以执行 Collections.search(myset, target, new ComparatorThing())。我没有看到什么吗?

谢谢。

编辑:

  • 我正在寻找元素的自然顺序之外的另一个领域。
  • 作为手动解决方法,我使用了以下静态方法。应该没问题,因为无论如何您都不能使用比较器中的自定义字段对另一个进行任何假设。
0 投票
2 回答
472 浏览

sql - 在 SQL 中编写“比较器”

我有以下问题:

根据以下规则找到表 A 中的最高行:

表 A
列:V_Date 日期、类型 int、H_Date 日期

1) 找到最高的 V_Date
2) 如果 V_Dates 相同,则找到具有最高优先级的行,其中优先级在表 B 中定义,列 Type int,Priority int
3) 如果 V_Date 和 Priority 相同,找到具有最高优先级的行最高的H_Date(那么就保证是唯一的)

优先级不明显,因此 max (prio) 返回多个值。

有谁能够帮我?

非常感谢。

0 投票
5 回答
6908 浏览

java - 将 binarySearch 与 Comparator 和 regex 一起使用

我正在尝试编写一个快速搜索来搜索 aList<String> 而不是循环遍历列表并手动检查,我想使用 binarySearch 来执行此操作,但我不知道该怎么做。

老办法:

相反,我想要这样的东西:

有人可以帮我写这个比较器吗?
有没有比使用 binarySearch 更好的方法呢?

0 投票
2 回答
409 浏览

java - 使用比较器作为嵌入式类,母类(在 clone 中初始化)字段在 compare 方法中不可见

我开发了一种称为 CCMN 的服务器到服务器协议,并为每个服务器缓存的消息开发了不同的丢弃策略。PEERSIM 模拟器使用 CCMN 协议创建一个模板节点,然后克隆这个模板节点。

CCMN 类包括维护实现丢弃策略所需的状态的不同数据结构。例如,Pmap将内容标识符解析为内容对象,并将内容标识符的频率解析为内容对象已被使用的次数。

这些数据结构的初始化是在 CCMN 的 clone 方法中完成的。为了支持丢弃策略,我使用了一个使用与要使用的策略相对应的比较器初始化的 priorityQueue。在克隆方法中:

lfu less_frequent=新 lfu(); av.raw_drop=new PriorityQueue(1, less_frequent); 比较器声明如下:

public int compare(String s0, String s1) { if(freq.get(s0) > freq.get(s1)) return 1; 否则 if(freq.get(s0) < freq.get(s1)) return -1; 否则返回 0;} }

问题是当我调用时出现 NullPointerException 异常:

通过调试,我发现添加对第一个元素有效,但是添加第二个元素时出现异常。我追踪了 compare 方法的异常,通过检查变量我发现freq变量(以及在 clone 方法中初始化的其他变量)等于null,而在构造函数中定义的变量定义良好。

此外,我在add调用之前检查了freq是否已很好地初始化。

我猜想将比较器定义为嵌入式类和克隆方法之间存在问题。

欢迎任何帮助。

问候, 穆罕默德

0 投票
3 回答
9368 浏览

java - TreeSet 和 equals 函数

有一个 Java bean 对象已经实现了equals基于特定标准(Criteria A)的功能。我需要根据另一个标准(标准 B)识别唯一对象。由于该equals函数使用标准 A,我不能使用HashSet. 所以我想使用基于标准 B 的TreeSet自定义。我的问题是,是否允许这样做?Comparator这种方法有什么问题吗?

谢谢你。

0 投票
1 回答
1285 浏览

java - Java 在 ArrayList 上实现比较器

我对 Java 很陌生,所以这可能是一个非常直截了当的问题。

我想根据指定键的自然顺序对ArrayList类中的一个进行排序。MediaLib

我不知道如何使用课堂compareTo(MediaInterface, key)上的比较器 ( ) Media。解决这个问题的最佳方法是什么?