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时,如果它向下移动,它会向上移动堆栈。
此外,任何人都可以告诉我如何通过不同的方法订购汽车。例如,将成本存储在临时最高值中,并检查新值是否高于当前值
答案 0 :(得分:5)
什么是可比较的界面?它是一个包含单一方法的接口:
compareTo(T o)
为Java提供与任何其他对象进行比较的能力。基本上你想将你的对象与同类(对象)的对象进行比较。因此,通常会检查 compareTo 实现:
if (o instanceof vehicles) {
Vehicles v = (Vehicles)o;
// compare
} else {
return false;
}
然后,在比较部分,您应根据您的业务规则决定其他车辆是否等于,对您的对象更少。
就这么简单!
答案 1 :(得分:1)
它使用冒泡排序,有时也称为沉没排序,是一种简单的排序算法,它反复遍历要排序的列表,比较每对相邻的项目,如果它们的顺序错误则交换它们。重复遍历列表,直到不需要交换,这表明列表已排序。
答案 2 :(得分:0)
检查Javadoc。
@return一个负整数,零或一个正整数,因为该对象小于,等于或大于指定的对象。
答案 3 :(得分:0)
Collections.sort(List list)使用此compareTo()方法来决定对象的自然顺序。见http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html