Java 这个比较器是如何工作的?

Java 这个比较器是如何工作的?,java,comparison,compare,Java,Comparison,Compare,我的比较器在底部,我只是想知道它实际上是如何工作的。我猜它就像一个堆栈,当它返回1时,如果它的-1向下移动,它就会向上移动堆栈 还有,有谁能告诉我如何通过不同的方式订购汽车。例如,将成本存储在温度最高值中,并检查新值是否高于当前值。请检查 @返回负整数、零或正整数,因为此对象小于、等于或大于指定对象 sort(List List)使用这个comapreTo()方法来决定对象的自然顺序。请参见什么是可比较的界面?它是一个包含单个方法的接口: package vehicles_order; imp

我的比较器在底部,我只是想知道它实际上是如何工作的。我猜它就像一个堆栈,当它返回1时,如果它的-1向下移动,它就会向上移动堆栈

还有,有谁能告诉我如何通过不同的方式订购汽车。例如,将成本存储在温度最高值中,并检查新值是否高于当前值。请检查

@返回负整数、零或正整数,因为此对象小于、等于或大于指定对象


sort(List List)使用这个comapreTo()方法来决定对象的自然顺序。请参见什么是可比较的界面?它是一个包含单个方法的接口:

package vehicles_order;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

public class vehicles implements Comparable  {

    String Vehicle;
    String Make;
    String Type;
    double Cost;


public static void main(String[] args){

    ArrayList cars = new ArrayList();
    cars.add(new vehicles ("CAR","Peugot","3008",12500.00));
    cars.add(new vehicles ("CAR","BMW","316",4995.00));
    cars.add(new vehicles ("CAR","Ford","Fiesta",2995.00));

    Collections.sort(cars);
    Iterator itr = cars.iterator();

    while(itr.hasNext()){
        Object element = itr.next();
        System.out.println(element + "\n");
    }
}

public vehicles(String vehicle, String make, String type, double cost){
    Vehicle = vehicle;
    Make = make;
    Type = type;
    Cost = cost;
}

public String toString() {
    return "Vehicle: " + Vehicle + "\n" + "Make: " + Make + "\n" + "Type: " + Type + "\n" + "Cost: " + Cost;    
}

public int compareTo(Object o1) {
    if (this.Cost == ((vehicles) o1).Cost)
        return 0;
    else if ((this.Cost) > ((vehicles) o1).Cost)
        return 1;
    else
        return -1;
}
}
为Java提供将您的对象与任何其他对象进行压缩的能力。基本上,您希望将您的对象与同类对象(类)进行比较。因此,与实现相比,有一个常见的检查:

compareTo(T o)
然后,在比较部分中,您应该根据您的业务规则,决定其他载体是否与您的对象相等、更多或更少

  • 0-如果它们相等
  • 1-如果你的目标更大
  • -1-如果你的目标较小

就这么简单

它使用冒泡排序,有时也称为下沉排序,是一种简单的排序算法,它重复地遍历要排序的列表,比较每对相邻项,如果它们的顺序错误,则交换它们。重复传递列表,直到不需要交换,这表明列表已排序。

类应命名为
车辆
,并应实现通用接口
可比
,字段名称应为驼峰大小写(即类型、成本等)
compareTo
方法不应进行任何显式类型检查。如果提供的对象不是预期的类型,则它将失败,并出现
ClassCastException
。尽管如此,通过在所讨论的类的声明中使用正确的泛型类型可以避免大部分问题。
if (o instanceof vehicles) {
  Vehicles v = (Vehicles)o;

  // compare
} else {
  return false;
}