我正在创建子类并在其中包含一些类元素。现在我想重写超类中的compareTo方法,并使用子类中的变量作为新compareTo方法中的参数,但我收到错误消息,指出compareTo方法的参数必须与超类中的参数相同。
这个问题有什么解决办法吗?
提前致谢!
我尝试过的解决方案是:
1)只是简单地在子类中编写新方法(而不是覆盖超类中的方法)2)使用我想要的参数在超类中创建新的compareTo方法
这样程序就可以工作,但我觉得这不是解决这个问题的正确方法
任何人都可以对此提出建议或提供建议吗?
您可以compareTo在不实现Comparable接口的情况下在类中定义方法
.实现Comparable
界面有什么好处?
我有一个List包含可变数量的对象(通常超过1000).这些对象具有某些属性,例如价格和距离(均为int).
现在我希望能够从最近到最远的List最便宜的OR排序,但我不知道如何实现它.我已经尝试制作我的对象工具Comparable,但这只能让我按其中一个属性排序......我如何根据不同的属性进行排序?
我想使用SortedSetGrails,但我得到的只是一个MissingMethodException.
包含有序集的类如下所示:
class SystemUser {
SortedSet organisations
// ... some other fields
static hasMany = [organisations: Organisation]
static belongsTo = [Organisation]
}
Run Code Online (Sandbox Code Playgroud)
......以及Comparable像这样实现的类:
class Organisation implements Comparable {
String name
// ... some other fields
static hasMany = [users: SystemUser]
int compareTo(other) {
return name.comparteTo(other.name)
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试保存SystemUser对象时,我收到此异常消息:
groovy.lang.MissingMethodException: No signature of method: java.lang.String.comparteTo() is applicable for argument types: (java.lang.String) values: [ABC]
Possible solutions: compareTo(java.lang.String), compareTo(java.lang.Object)
Run Code Online (Sandbox Code Playgroud)
我收到了这个神秘的错误:
对于参数类型java.lang.Comparable,java.lang.Comparable,未定义operator>
有没有搞错?
(这是代码)
public class BST<T extends Comparable<T>> {
public static class Node<P extends Comparable<P>> {
P val;
Node<P> left;
Node<P> right;
public Node() {
}
public Node(P val) {
this.val = val;
}
}
Node<T> root;
private void addValHelper(Node root, Node newNode) {
if (root.val > newNode.val) { // <-- ERROR IS HERE
if (root.left == null) {
root.left = newNode;
} else {
addValHelper(root.left, newNode);
}
} else {
if (root.right == null) {
root.right = newNode; …Run Code Online (Sandbox Code Playgroud) 在可比性中,只能创建一个排序序列,而在比较器中,可以创建许多排序序列。排序顺序在这里到底是什么意思。
我有一个对象的arraylist无法实现Comparator/Comparable接口.
对象有一个字段:'SequenceNumber',它是一个整数.我需要按照这个字段(从最低到最高)的顺序对arraylist进行排序,而不实现上面提到的接口.
有没有一种简单的方法可以做到这一点,我可以手动编写一个排序算法,但想知道是否有一个更有效(和更多无错误)的方式这样做,我在搜索时错过了?
注意:使用Java 7.
comparable ×7
java ×7
sorting ×3
arraylist ×1
collections ×1
comparator ×1
compareto ×1
generics ×1
grails ×1
groovy ×1
interface ×1
object ×1
sortedset ×1