问题标签 [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 - 当参数必须输入超类时 compareTo() 的最佳实践
我正在寻找在类实现 Comparable 的情况下定义 compareTo() 方法的最佳实践。因此,方法的签名必须是
首先要做的显而易见的事情是检查 arg 是否是此类的实例,如果是,则强制转换为该类,并比较成员。但是,如果参数不是这个类,而是其他一些也实现 BaseClass 的类,我应该返回什么以便它具有自反性?
我知道,最好的做法是只为它所在的类定义 compareTo(),但是水已经超过了大坝。
java - 如何比较java中的多个类?
现在,我在比较器上编写了对整数和字符串数组进行排序的文章。从代码中可以看出,如果两个类不相同,则 String 类取大于值。但是,这只允许两个类。如果我想在我的数组中添加另一种原始类型,例如 Float,该怎么办?我必须在 if-else 语句中添加更多代码。有没有一种方法可以实现比较,而无需为我要比较的每个附加类添加语句?
输出:
java - 公共接口 ITMark>
现在我想用类实现这个接口。那我该怎么做呢?
这是这种方式,但抛出错误
我得到以下信息:
我在 Eclipse IDE 中实现这个代码
java - 如何用枚举实现一个接口,该接口扩展了 Comparable?
考虑这段代码:
由于类型擦除的限制,我收到以下错误:
java.lang.Comparable 不能用不同的参数继承:
<Foo>
和<FooImpl>
我有以下要求:
FooImpl
需要是一个枚举,因为我需要将它用作注释中的默认值。- 我的接口的约定是它需要具有可比性。
我已经尝试在接口中使用泛型边界,但 Java 不支持。
java - 如果 compareTo() 返回 0,为什么暗示对象相等?
让我们上课吧Person
。人有名字和身高。
Equals 和 hashCode() 仅考虑名称。Person 是可比较的(或者我们为它实现了比较器,不管是哪一个)。人是按身高来比较的。
期望两个不同的人可以具有相同高度的情况似乎是合理的,但是例如。TreeSet 的行为类似于 comapareTo()==0 意味着等于,而不仅仅是相同的大小。
为了避免这种情况,如果大小相同,比较可以第二次查看其他内容,但不能用于检测相同大小的不同对象。
例子:
结果:
你知道为什么会这样吗?
java - Java Generics, Inconvertible type, typecasting, heap d-ary
This is my remove method for d-ary heaps. I'm getting a lot of 'inconvertible type' error when i compile. Also note that my program extends Comparable.
I know my array is not type object but type T.
Question: I understand everything should be type T, but when I was writing my code I got a lot of errors of "CAN'T CONVERT TYPE T TO TYPE INT", so i decided to typecast to make it same type (T) or (Integer). I realize now that doing this was wrong since I get "inconvertible type" error. Someone who has a high understanding on Java Generics please tell me techniques and tips to keep everything of type T.
errors: happen when i typecast (Integer). I can post all of my code if you want me to but i think this is enough.
java - 在 Eclipse 调试器中运行的导出、签名 apk 和版本的差异?导致问题的可序列化类
希望这不会太啰嗦,但尽量完整:
所以我在 Android Market 上有一个应用程序。应用程序中有一些可序列化的类。应用程序在任何地方都运行良好(在模拟器中、在调试手机上、在下载应用程序的手机上)。
我决定添加一些功能。这些功能涉及在我的一个 Serializable 类上实现 Comparable。在 Eclipse(模拟器或附加电话)中,更改似乎是有效的。同样根据this Java document,我认为这些更改是对 Serializable 类的有效更改。
现在来解决问题。似乎在导出签名的 apk 后,我的应用程序崩溃了。第一次触摸更改的类时会发生崩溃。堆栈跟踪被混淆了,细节不是太重要(我认为),但它是一个 NullPointerException 导致应用程序崩溃。
这是我的实验中更改的代码:
可比版本:
使用添加的方法:
普通/原始版本:
没有添加的方法。
其他类是相同的。请注意,getName() 返回一个字符串。
我进行了以下实验:
- 从我的手机上完全卸载该应用程序。
- 在没有对代码进行可比较更改的情况下构建应用程序,并通过 Eclipse 在我的手机上运行。(运行良好)。
- 通过 Eclipse 实现 Comparable 更改并在我的手机上运行。(运行良好)。
这里没有问题。现在我导出了上述每个构建的签名版本。
- 从我的手机上完全卸载该应用程序。
- 导出应用程序的签名版本而不进行可比更改。使用: adb install com.myapp 上传到手机(运行良好)。
- 导出具有可比较更改的应用程序签名版本。使用 adb 上传。访问以前保存的 (NullPointerException) 时崩溃。
作为健全性检查,我做了以下事情:
- 从手机上完全卸载应用程序。
- 安装导出的、签名版本的应用程序 WITH Comparable change。没问题。
请注意,在步骤 1. 和 2. 之间不卸载的原因是模拟最终用户在更新之间保留他/她的数据(这里的一个重要功能)。另请注意,上面最后的健全性检查让我相当确定这是对 Serializeable 类的更改的问题。
所以基本问题是:签名的、导出的应用程序与在 Eclipse 中运行的版本之间有什么区别?是否有理由对 Serializable 类进行有效更改会在导出后破坏应用程序?
java - 可比比较器 Java
这是我的代码
我还有一个实现 Comparable 的类 BOX。现在我有几个问题希望大家帮助我解决。
1.是否在可比较接口中声明的方法,系统已定义,如我可以在可比较中使用任何方法,还是必须compareTo
只有?
2.我没有提供Arrays.sort方法的实现,那它是如何对我的元素进行排序的呢?
3.当我使用Comparator
代替时comparable
,我使用:
//在上面的代码中studentbyname implements comparator
,,但是box仍然实现comparable
了.ie
现在我在做Arrays.sort(students,c1)
,为什么我现在要通过c1?
scala - Scala 的 Comparable 特征是什么?
我正在寻找 C# IComparable 的 Scala 对应物,我发现了 Comparable trait。我的意思是——提到了 Comparable,但是当我在http://www.scala-lang.org/api/current/scala/上搜索它时,我得到 0 次点击。因为这个名字,使用谷歌我得到了很多“Scala 是如何与……相媲美”的结果。
关于这个神秘的 Comparable 东西,我能读到什么资源吗?毕竟 Ordered 扩展了它,所以它必须存在。
scala - 在 Scala 中对未绑定的 Comparable 进行排序
我对使用Ordering
's 在 Scala 中进行排序有点熟悉,但是我想对一些在 Java 中定义的对象进行排序。它们是Comparable
(不是Comparable[T]
)和final
:
(这实际上是 Lucene 的 Term 类,不,我不能更改 Lucene 的版本)。
我首先希望在某个地方有一个隐含的:
所以也许我可以订购它?
在此之后,我想我会求助于使用的讨厌java.util.Collections.sort
:
所以看起来即使这也不起作用,因为 Scala 对它的类型参数很严格。在这一点上,我可以看到两种方法:重新实现另一个显式排序(不好)或用 Java 编写排序(没那么坏)。
有没有办法在 Scala 中干净地做到这一点?我假设这种情况在使用遗留 Java 对象时可能很常见?