Young87

当前位置:首页 >个人收藏

java 按某两个字段排序

假如有个接口返回了一些订单数据,这些数据包含订单日期,订单号,订单金额,我们要求对这些订单按以下规则进行排序

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_测试代码

下一篇: 天下足球 2016年欧洲杯 化茧成蝶 文案整理

精华推荐