java8 stream排序

新建类

public class Goods {

    private String goodCode;

    private String goodName;

	/**
	* 购买日期(日期格式:yyyy.MM.dd)
	*/
    private String buyDate;

    /**
     * N天前购买
     */
    private Integer buyDayBefore;

    private String goodNorms;

    private String goodQty;

    private String goodPric;

    private String goodSort;

    /**
     * 商品厂家
     */
    private String goodVend;

    /**
     * 是否营销品Y/N
     */
    private String isMakt;

    /**
     * 是否统筹医保商品Y/N
     */
    private String isMediInsuCoor;

    /**
     * 上次购买价格
     */
    private String lastBuyPrice;

    /**
     * 上次购买数量
     */
    private String lastBuyQuantity;

    /**
     * 折扣
     */
    private Double discount;

    /**
     * 零售价
     */
    private String retailPrice;

    public String getGoodCode() {
        return goodCode;
    }

    public void setGoodCode(String goodCode) {
        this.goodCode = goodCode;
    }

    public String getGoodName() {
        return goodName;
    }

    public void setGoodName(String goodName) {
        this.goodName = goodName;
    }

    public String getBuyDate() {
        return buyDate;
    }

    public void setBuyDate(String buyDate) {
        this.buyDate = buyDate;
    }

    public Integer getBuyDayBefore() {
        return buyDayBefore;
    }

    public void setBuyDayBefore(Integer buyDayBefore) {
        this.buyDayBefore = buyDayBefore;
    }

    public String getGoodNorms() {
        return goodNorms;
    }

    public void setGoodNorms(String goodNorms) {
        this.goodNorms = goodNorms;
    }

    public String getGoodQty() {
        return goodQty;
    }

    public void setGoodQty(String goodQty) {
        this.goodQty = goodQty;
    }

    public String getGoodPric() {
        return goodPric;
    }

    public void setGoodPric(String goodPric) {
        this.goodPric = goodPric;
    }

    public String getGoodSort() {
        return goodSort;
    }

    public void setGoodSort(String goodSort) {
        this.goodSort = goodSort;
    }

    public String getGoodVend() {
        return goodVend;
    }

    public void setGoodVend(String goodVend) {
        this.goodVend = goodVend;
    }

    public String getIsMakt() {
        return isMakt;
    }

    public void setIsMakt(String isMakt) {
        this.isMakt = isMakt;
    }

    public String getIsMediInsuCoor() {
        return isMediInsuCoor;
    }

    public void setIsMediInsuCoor(String isMediInsuCoor) {
        this.isMediInsuCoor = isMediInsuCoor;
    }

    public String getMedicalGoodLevel() {
        return medicalGoodLevel;
    }

    public void setMedicalGoodLevel(String medicalGoodLevel) {
        this.medicalGoodLevel = medicalGoodLevel;
    }

    public String getIsStoreActivity() {
        return isStoreActivity;
    }

    public void setIsStoreActivity(String isStoreActivity) {
        this.isStoreActivity = isStoreActivity;
    }

    public String getLastBuyPrice() {
        return lastBuyPrice;
    }

    public void setLastBuyPrice(String lastBuyPrice) {
        this.lastBuyPrice = lastBuyPrice;
    }

    public String getLastBuyQuantity() {
        return lastBuyQuantity;
    }

    public void setLastBuyQuantity(String lastBuyQuantity) {
        this.lastBuyQuantity = lastBuyQuantity;
    }

    public Double getDiscount() {
        return discount;
    }

    public void setDiscount(Double discount) {
        this.discount = discount;
    }

    public String getRetailPrice() {
        return retailPrice;
    }

    public void setRetailPrice(String retailPrice) {
        this.retailPrice = retailPrice;
    }
}

单个字段升序排序:

// 如果是字符串类型的数字,需要转换成整形才能正确排序
goodsList.stream().sorted(Comparator.comparing(o -> Integer.valueOf(o.getGoodSort())));

多个字段组合排序:

// 排序规则:下单时间离当前最近的>是营销品的>零售价格高的
goodsList.stream()
       .sorted(Comparator.comparing(Good::getBuyDate, (o1, o2) -> {
           Date o1BuyDate = DateUtil.getTime(o1, "yyyy.MM.dd");
           Date o2BuyDate = DateUtil.getTime(o2, "yyyy.MM.dd");
           assert o2BuyDate != null;
           return o2BuyDate.compareTo(o1BuyDate);
       }).thenComparing(Good::getIsMakt, (o1, o2) -> {
           if ("Y".equals(o1) && "N".equals(o2)) {
               return -1;
           } else if ("N".equals(o1) && "Y".equals(o2)) {
               return 1;
           }
           return 0;
       }).thenComparing(Good::getRetailPrice, (o1, o2) -> new BigDecimal(o2).compareTo(new BigDecimal(o1))))
       .collect(Collectors.toList());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值