gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:38 25 4
gpt4 key购买 nike

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;
}
}

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

此外,谁能告诉我如何通过不同的方法订购汽车。例如,将成本存储在临时最高值中,并检查新值是否高于当前值

最佳答案

什么是 Comparable 接口(interface)?它是一个包含单一方法的接口(interface):

compareTo(T o)

为 Java 提供将您的对象与任何其他对象进行比较的能力。基本上你想将你的对象与同类(类)的对象进行比较。所以在 compareTo 实现中有一个常规检查:

if (o instanceof vehicles) {
Vehicles v = (Vehicles)o;

// compare
} else {
return false;
}

然后,在比较部分,您应该根据您的业务规则决定其他车辆是否与您的对象相同,或多或少。

  • 0 - 如果它们相等;
  • 1 - 如果你的对象更大;
  • -1 - 如果你的物体较小。

就这么简单!

关于java - 这个比较器是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23136998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com