对List中的对象进行排序

最近有这样一个需求,List中保存的订单信息,先要对订单内的金额按照倒叙排序,金额大的放在最前面,然后按照日期倒序,最早的日期放在前面

import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;

import java.util.Collections;
import java.util.Date;
import java.util.List;

/**
 * @author 秋水
 * @version 1.0
 */
public class Test {
    public static void main(String[] args) {

        OrderModel userDo1 = new OrderModel("aaa", 10.0, new Date());
        OrderModel userDo2 = new OrderModel("aaa", 20.0, new Date());
        OrderModel userDo3 = new OrderModel("aaa", 30.0, new Date());

        SortPrice sortPrice = new SortPrice();
        SortTime sortTime = new SortTime();

        List<OrderModel> list = Lists.newArrayList(userDo1, userDo2, userDo3);
        Ordering<OrderModel> secondaryOrdering = Ordering.from(sortPrice).reverse().compound(sortTime);
        Collections.sort(list, secondaryOrdering);

        for (OrderModel userDo : list) {
            System.out.println(userDo.toString());
        }

    }


}

import com.google.common.primitives.Doubles;

import java.util.Comparator;

/**
 * @author 秋水
 * @version 1.0
 */
public class SortPrice implements Comparator<OrderModel> {


    @Override
    public int compare(OrderModel o1, OrderModel o2) {
        return Doubles.compare(o1.getPrice(),o2.getPrice());
    }
}


import com.google.common.primitives.Longs;

import java.util.Comparator;

/**
 * @author 秋水
 * @version 1.0
 */
public class SortTime implements Comparator<OrderModel> {


    @Override
    public int compare(OrderModel o1, OrderModel o2) {
        return o1.getStartTime().compareTo(o2.getStartTime());
    }
}

import java.sql.Timestamp;
import java.util.Date;

import lombok.Data;

/**
 * @author 秋水
 * @version 1.0
 */
@Datapublic class OrderModel {    /**     * 用户名     */    private String userName;    private Double price;    private Date startTime;    public OrderModel(String userName, Double price, Date startTime) {        this.userName = userName;        this.price = price;        this.startTime = startTime;    }}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值