新建类
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());