如何为自定义对象实现比较方法
How To implement Compare to method for custom object
在 java 中,我有一个自己的数组列表(已实现),我有一个排序方法,所以我需要 'compareTo' 方法,这就是我实现 Comparable 并使 class 抽象的原因。但是,如果我使用 main 中的数组列表,我必须实现与方法的比较。但我不明白我如何实现这个。(我有一个限制,例如,如果我有一个 'order' class 的数组列表我无法按顺序实现可比较 class)
数组列表
public abstract class ArrayList<T> implements Comparable
内部排序函数
Comparable left=(Comparable)L[i];
Comparable right=(Comparable)R[j];
for(int k=start;k<=end;k++)
{
if(left.compareTo(right)<=0)
{
array[k]=L[i];
i++;
left=(Comparable)L[i];
}
来自主要
ArrayList<Order> order = new ArrayList<Order>() {
@Override
public int compareTo(Object o) {
if(this)// but this main is not order class this is arraylist class
return 0;
}
};
为什么您的 ArrayList
实施 Comparable
?你想比较 2 个列表吗?
如果要比较或排序列表的元素,元素应该是 Comparable,但列表本身不是。
您还可以看看以下问题:How to use Comparator in Java to sort
然后你必须为你的 class Order
(不是接口 Comparable
)
实现一个 Comparator
在 java 中,我有一个自己的数组列表(已实现),我有一个排序方法,所以我需要 'compareTo' 方法,这就是我实现 Comparable 并使 class 抽象的原因。但是,如果我使用 main 中的数组列表,我必须实现与方法的比较。但我不明白我如何实现这个。(我有一个限制,例如,如果我有一个 'order' class 的数组列表我无法按顺序实现可比较 class)
数组列表
public abstract class ArrayList<T> implements Comparable
内部排序函数
Comparable left=(Comparable)L[i];
Comparable right=(Comparable)R[j];
for(int k=start;k<=end;k++)
{
if(left.compareTo(right)<=0)
{
array[k]=L[i];
i++;
left=(Comparable)L[i];
}
来自主要
ArrayList<Order> order = new ArrayList<Order>() {
@Override
public int compareTo(Object o) {
if(this)// but this main is not order class this is arraylist class
return 0;
}
};
为什么您的 ArrayList
实施 Comparable
?你想比较 2 个列表吗?
如果要比较或排序列表的元素,元素应该是 Comparable,但列表本身不是。
您还可以看看以下问题:How to use Comparator in Java to sort
然后你必须为你的 class Order
(不是接口 Comparable
)
Comparator