java 按某两个字段排序
日期: 2019-08-21 分类: 个人收藏 432次阅读
假如有个接口返回了一些订单数据,这些数据包含订单日期,订单号,订单金额,我们要求对这些订单按以下规则进行排序
1、订单日期升序
2、订单日期相同的,订单金额从大到小排序
实现思路:构造订单类。重写comparator排序方法,如果有类似需求,可对代码做相应修改后使用。
public class OrderSortTest{
public static void main(String[] args) {
Order o1 = new Order("2018-01-01",1234567890,3.14);
Order o2 = new Order("2018-01-02",1234567891,3.14);
Order o3 = new Order("2018-01-01",1234567892,3.15);
Order o4 = new Order("2018-01-02",1234567893,3.16);
Order o5 = new Order("2018-01-01",1234567893,3);
List<Order> list = new ArrayList<Order>();
list.add(o1);
list.add(o2);
list.add(o3);
list.add(o4);
list.add(o5);
Collections.sort(list, new Comparator<Order>() {
@Override
public int compare(Order o1, Order o2) {
String s1 = o1.getDateStr();
String s2 = o2.getDateStr();
int temp = s1.compareTo(s2);
if(temp != 0){
return temp;
}
double m1 = o1.getMoney();
double m2 = o2.getMoney();
BigDecimal data1 = new BigDecimal(m1);
BigDecimal data2 = new BigDecimal(m2);
return data2.compareTo(data1);
}
});
System.out.println(list);
}
// 订单类
static class Order{
// 订单日期
private String dateStr;
// 订单号
private long order;
// 订单金额
private double money;
public String getDateStr() {
return dateStr;
}
public long getOrder() {
return order;
}
public double getMoney() {
return money;
}
@Override
public String toString() {
return "Order{" +
"dateStr='" + dateStr + '\'' +
", order=" + order +
", money=" + money +
'}';
}
public Order(String dateStr, long order, double money) {
this.dateStr = dateStr;
this.order = order;
this.money = money;
}
}
}
结果截图:
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
上一篇: 12.1、python_测试代码
精华推荐