麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

List集合中對數據實現多重規則進行排序的案例

2024-07-14 08:43:06
字體:
來源:轉載
供稿:網友

List集合進行排序時,很多人會考慮冒泡、快速等排序算法,但是對于多重排序規則的話,算法就不太適用了。其實java.util.Collections已經提供了sort的排序方法,并且能自己實現其排序規則。

現在有個場景:我需要對一批優惠券進行排序,優惠券有三個屬性:是否可用、券類型、面額。我需要將可用的、券類型最大的、面額最大的券排到最前面。

即優先按是否可用排序,其次是券類型,再者就是面額。    

話不多說,看代碼吧:

package com.test;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;/** * List多重規則排序測試類 */public class TestCompartor {  public static void main(String[] args) {    ArrayList<Coupon> persons = new ArrayList<Coupon>();    persons.add(new Coupon(13,0,new BigDecimal(40)));    persons.add(new Coupon(13,0,new BigDecimal(50)));    persons.add(new Coupon(13,0,new BigDecimal(45)));    persons.add(new Coupon(1,0,new BigDecimal(20)));    persons.add(new Coupon(13,1,new BigDecimal(30)));    persons.add(new Coupon(1,0,new BigDecimal(25)));    persons.add(new Coupon(11,0,new BigDecimal(50)));    persons.add(new Coupon(11,1,new BigDecimal(40)));    System.out.println("排序之前:");    for (int i = 0; i <persons.size(); i++) {      System.out.println(persons.get(i));    }    System.out.println();    Collections.sort(persons, new Comparator<Coupon>() {      //按可用升序,券類型降序,面額降序      public int compare(Coupon o1, Coupon o2) {        if (o1.valueAble.compareTo(o2.valueAble)==0){         if(o2.themeType.compareTo(o1.themeType)==0){         return o2.amount.compareTo(o1.amount)>0?1:-1;         }else{         return o2.themeType - o1.themeType;         }        }else{          return o1.valueAble-o2.valueAble ;        }      }    });    System.out.println("排序后結果:");    for (int i = 0; i <persons.size(); i++) {      System.out.println(persons.get(i));    }  }  static class Coupon{    public Integer themeType; //優惠券類型    public Integer valueAble; //可用 ,0 可用,1不可用    public BigDecimal amount; //面額    @Override    public String toString() {      return "Person{" +          "themeType=" + themeType +          ", valueAble=" + valueAble +          ", amount=" + amount +          '}';    } public Coupon(Integer themeType, Integer valueAble, BigDecimal amount) {  super();  this.themeType = themeType;  this.valueAble = valueAble;  this.amount = amount; }  }}

至于封裝工具類我就懶得弄了,有需要的自己封裝吧。

這里如果用了Integer等封裝類型,最好自己也做下非空處理。

排序之前:

Person{themeType=13, valueAble=0, amount=40} Person{themeType=13, valueAble=0, amount=50} Person{themeType=13, valueAble=0, amount=45} Person{themeType=1, valueAble=0, amount=20} Person{themeType=13, valueAble=1, amount=30} Person{themeType=1, valueAble=0, amount=25} Person{themeType=11, valueAble=0, amount=50} Person{themeType=11, valueAble=1, amount=40} 

排序后結果:

Person{themeType=13, valueAble=0, amount=50} Person{themeType=13, valueAble=0, amount=45} Person{themeType=13, valueAble=0, amount=40} Person{themeType=11, valueAble=0, amount=50} Person{themeType=1, valueAble=0, amount=25} Person{themeType=1, valueAble=0, amount=20} Person{themeType=13, valueAble=1, amount=30} Person{themeType=11, valueAble=1, amount=40}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 外国一级黄色片 | 精品国产91久久久久久久 | 国产成人在线观看网站 | 一区二区三区在线视频观看58 | 一级做受毛片免费大片 | 污片视频网站 | 成人午夜视频免费 | 黄色网欧美 | 日韩色视频在线观看 | 精品国产一区二区三区四区在线 | 免费黄色欧美视频 | 亚洲最新黄色网址 | 特级a欧美做爰片毛片 | 欧美成人三级大全 | 黄污污网站 | 久久久久免费精品国产小说色大师 | 精品国产一区二区亚洲人成毛片 | 夜夜看 | 毛片大全在线观看 | 国产一级毛片av | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 午夜精品老牛av一区二区三区 | 日本一级黄色毛片 | 久久亚洲线观看视频 | 最新黄色电影网站 | 斗罗破苍穹在线观看免费完整观看 | 国产亚洲精品综合一区91 | 亚洲成人在线免费 | 欧美日韩免费一区 | 久久艹逼 | 国产精品久久久久久久av三级 | 久久国产中文 | 亚洲一区二区免费 | 久久精品一区视频 | 九九热在线精品视频 | 欧美中文字幕在线视频 | 欧美顶级毛片在线播放小说 | 成人福利在线播放 | 亚洲一级片免费观看 | 国产精品观看在线亚洲人成网 | 国产一级在线看 |