Eup*_*phe 1 java sorting arraylist
我有一个班级订单(我减少了较小尺寸的制定者和吸气剂).
class Order implements Comparable<Order>{
private int number;
private int price;
private int quantity;
private boolean isMarketOrder;
private boolean isBuyOrder;
@Override
public int compareTo(Order o) {
int value1 = Boolean.compare(this.isMarketOrder(), o.isMarketOrder());
if (value1 != 0){
return value1;
}
int value2 = Integer.compare(this.getPrice(),(o.getPrice()));
if (value2 != 0) {
return value2;
}
int value3 = Integer.compare(this.getNumber(),(o.getNumber()));
return value3;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一份订单清单:
public static ArrayList<Order> buyOrders = new ArrayList<Order>();
Run Code Online (Sandbox Code Playgroud)
我做
Collections.sort(buyOrders);
Run Code Online (Sandbox Code Playgroud)
排序时我想要使用的规则:
实际发生的事情是价格较高的商品首先出现,isMarketOrder == true商品是最后的.
这是为什么?
因为true大于false,所以您使用的排序isMarketOrder==false要先去isMarkerOrder==true.如果你有:
int value1 = Boolean.compare(this.isMarketOrder(), o.isMarketOrder());
if (value1 != 0){
return -value1;
}
Run Code Online (Sandbox Code Playgroud)
你会得到相反的效果.