public int compare(MakeOrderAccount left, MakeOrderAccount right) { int leftHasClose = left.isOpen() ? 1 : 0; int rightHasClose = right.isOpen() ? 1 : 0; int result = leftHasClose - rightHasClose; if (result != 0) return result; BigDecimal leftLot = left._isBuyForCurrent ? left._buyLot : left._sellLot; BigDecimal rightLot = right._isBuyForCurrent ? right._buyLot : right._sellLot; result = leftLot.compareTo(rightLot); if (result != 0) return -result; return left._account.get_Code().compareTo(right._account.get_Code()); }