问题标签 [comparable]

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

java - 从主要包含空值的 Comparables 列表中获取最小值和最大值的最佳方法是什么?

我正在考虑这样的事情:

但不是空安全的,这也是我想要的。

你知道解决这个问题的更好方法吗?

编辑:

发表评论后,我也尝试了 min():

你对那个怎么想的?

0 投票
2 回答
2712 浏览

java - < 和 > 是什么意思,例如实现 Comparable?

Java 1.4.2中,类java.math.BigInteger实现接口ComparableSerializable.

Java 1.5.0中,类java.math.BigInteger实现接口SerializableComparable<BigInteger>.

这只是帮助我询问<and的一个例子>。我真正想知道的是<>东西。

我的问题有三个:

  • <BigInteger>声明的一部分是什么implements意思?
  • 那语法叫什么?
  • 它有什么作用?

PS:谷歌搜索真的很难,<而且一>开始就不可能搜索到。<>

谢谢!

0 投票
12 回答
35171 浏览

java - 为什么 java.lang.Number 不实现 Comparable?

有谁知道为什么 java.lang.Number不实施Comparable?这意味着您不能对Numbers 进行排序,Collections.sort这在我看来有点奇怪。

发布讨论更新:

感谢所有有用的回复。我最终对这个主题做了更多的研究

为什么 java.lang.Number 不实现 Comparable 的最简单解释源于可变性问题。

稍微回顾一下,是, , , , , , , , andjava.lang.Number的抽象超类型。在那个列表上,并且不执行.AtomicIntegerAtomicLongBigDecimalBigIntegerByteDoubleFloatIntegerLongShortAtomicIntegerAtomicLongComparable

挖掘了一下,我发现Comparable在可变类型上实现并不是一个好习惯,因为在比较期间或之后对象可能会发生变化,从而使比较结果变得无用。AtomicLong和都是AtomicInteger可变的。API 设计者有先见之明没有Number实现Comparable,因为它会限制未来子类型的实现。确实,AtomicLong并且在最初实现AtomicInteger之后很久就被添加到 Java 1.5中。java.lang.Number

除了可变性之外,这里可能还有其他考虑因素。一个compareTo实现Number必须将所有数值提升为,BigDecimal因为它能够容纳所有Number子类型。这种提升在数学和性能方面的含义对我来说有点不清楚,但我的直觉发现这个解决方案很笨拙。

0 投票
5 回答
71754 浏览

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

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

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

0 投票
4 回答
996 浏览

java - 提高可比性比较性能

我分析了我的代码,发现我的类实现Comparable<T>了 8 倍以上的 cpu 时间

比在

我认为减速是因为此方法的虚拟表查找。


有没有办法强制静态调用函数?(就像在非虚拟 C++ 方法中一样)

我仍然想使用Comparable<T>接口,因为我使用TreeSet了这个对象并且我不想重写这个代码。


编辑:不,我没有实现compareTo(Object) - 这是由探查器自动生成和报告的

0 投票
10 回答
5775 浏览

java - Java 泛型和无穷大(可比较)

使用 Integer 类型,您可以执行以下操作:

如果我使用泛型,我该怎么办?

我需要这个来实现类似于 PriorityQueue 的东西。我可以访问要从队列中删除的节点,但这不是最小值。

我被困在第一步。我唯一能做的就是将节点的键设置为当前最小值。不确定是否足够。

0 投票
6 回答
4502 浏览

java - 在java中,从可比较的意思延伸是什么意思

我看到这样的代码

这是什么意思,它的优点和缺点是什么?

0 投票
3 回答
6097 浏览

java - Java:使用 Collat​​orKey 对集合进行排序

我想要实现的是按字符串值对对象集合进行排序。但是,以依赖于语言环境的方式使用整理器。由于性能原因,我不想使用 Collat​​or compare() 方法(如下面的代码)而不是 Collat​​ionKey 类,因为 java API 声明使用 Collat​​ionKey 要快得多。

但是如何使用 Collat​​ionKey 实现 compareTo() 方法?据我了解,如果我要使用 Collat​​ionKey,我必须自己完全编写所有比较方法。所以我什至不能再使用 Collections.sort() 方法......我非常感谢一个易于理解的示例以及使用 Collat​​ionKey 对 Person 对象的集合进行排序的最有效实现。

谢谢!

0 投票
3 回答
999 浏览

java - Java 泛型的乐趣

有人知道如何使用泛型编写下面的代码并避免编译器警告吗?(@SuppressWarnings("unchecked") 被认为是作弊)。

而且,也许,通过泛型检查 "left" 的类型是否与 "right" 的类型相同?

0 投票
11 回答
222950 浏览

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

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