问题标签 [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.
java - 从主要包含空值的 Comparables 列表中获取最小值和最大值的最佳方法是什么?
我正在考虑这样的事情:
但不是空安全的,这也是我想要的。
你知道解决这个问题的更好方法吗?
编辑:
发表评论后,我也尝试了 min():
你对那个怎么想的?
java - < 和 > 是什么意思,例如实现 Comparable?
在Java 1.4.2中,类java.math.BigInteger
实现接口Comparable
,Serializable
.
在Java 1.5.0中,类java.math.BigInteger
实现接口Serializable
,Comparable<BigInteger>
.
这只是帮助我询问<
and的一个例子>
。我真正想知道的是<
和>
东西。
我的问题有三个:
<BigInteger>
声明的一部分是什么implements
意思?- 那语法叫什么?
- 它有什么作用?
PS:谷歌搜索真的很难,<
而且一>
开始就不可能搜索到。<
>
谢谢!
java - 为什么 java.lang.Number 不实现 Comparable?
有谁知道为什么 java.lang.Number
不实施Comparable
?这意味着您不能对Number
s 进行排序,Collections.sort
这在我看来有点奇怪。
发布讨论更新:
感谢所有有用的回复。我最终对这个主题做了更多的研究。
为什么 java.lang.Number 不实现 Comparable 的最简单解释源于可变性问题。
稍微回顾一下,是, , , , , , , , andjava.lang.Number
的抽象超类型。在那个列表上,并且不执行.AtomicInteger
AtomicLong
BigDecimal
BigInteger
Byte
Double
Float
Integer
Long
Short
AtomicInteger
AtomicLong
Comparable
挖掘了一下,我发现Comparable
在可变类型上实现并不是一个好习惯,因为在比较期间或之后对象可能会发生变化,从而使比较结果变得无用。AtomicLong
和都是AtomicInteger
可变的。API 设计者有先见之明没有Number
实现Comparable
,因为它会限制未来子类型的实现。确实,AtomicLong
并且在最初实现AtomicInteger
之后很久就被添加到 Java 1.5中。java.lang.Number
除了可变性之外,这里可能还有其他考虑因素。一个compareTo
实现Number
必须将所有数值提升为,BigDecimal
因为它能够容纳所有Number
子类型。这种提升在数学和性能方面的含义对我来说有点不清楚,但我的直觉发现这个解决方案很笨拙。
java - 为什么 compareTo 在 Java 中的 Enum final 上?
Java 中的枚举实现了该Comparable
接口。重写Comparable
的compareTo
方法会很好,但在这里它被标记为最终的。Enum
's上的默认自然顺序compareTo
是列出的顺序。
有谁知道为什么 Java 枚举有这个限制?
java - 提高可比性比较性能
我分析了我的代码,发现我的类实现Comparable<T>
了 8 倍以上的 cpu 时间
比在
我认为减速是因为此方法的虚拟表查找。
有没有办法强制静态调用函数?(就像在非虚拟 C++ 方法中一样)
我仍然想使用Comparable<T>
接口,因为我使用TreeSet
了这个对象并且我不想重写这个代码。
编辑:不,我没有实现compareTo(Object) - 这是由探查器自动生成和报告的
java - Java 泛型和无穷大(可比较)
使用 Integer 类型,您可以执行以下操作:
如果我使用泛型,我该怎么办?
我需要这个来实现类似于 PriorityQueue 的东西。我可以访问要从队列中删除的节点,但这不是最小值。
我被困在第一步。我唯一能做的就是将节点的键设置为当前最小值。不确定是否足够。
java - 在java中,从可比较的意思延伸是什么意思
我看到这样的代码
这是什么意思,它的优点和缺点是什么?
java - Java:使用 CollatorKey 对集合进行排序
我想要实现的是按字符串值对对象集合进行排序。但是,以依赖于语言环境的方式使用整理器。由于性能原因,我不想使用 Collator compare() 方法(如下面的代码)而不是 CollationKey 类,因为 java API 声明使用 CollationKey 要快得多。
但是如何使用 CollationKey 实现 compareTo() 方法?据我了解,如果我要使用 CollationKey,我必须自己完全编写所有比较方法。所以我什至不能再使用 Collections.sort() 方法......我非常感谢一个易于理解的示例以及使用 CollationKey 对 Person 对象的集合进行排序的最有效实现。
谢谢!
java - Java 泛型的乐趣
有人知道如何使用泛型编写下面的代码并避免编译器警告吗?(@SuppressWarnings("unchecked") 被认为是作弊)。
而且,也许,通过泛型检查 "left" 的类型是否与 "right" 的类型相同?
java - 什么时候类应该是 Comparable 和/或 Comparator?
我见过同时实现Comparable和Comparator的类。这是什么意思?为什么我要使用其中一个?