欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例

 更新時(shí)間:2018年12月08日 11:23:16   作者:執(zhí)筆記憶的空白  
今天小編就為大家分享一篇關(guān)于List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

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

現(xiàn)在有個(gè)場(chǎng)景:我需要對(duì)一批優(yōu)惠券進(jìn)行排序,優(yōu)惠券有三個(gè)屬性:是否可用、券類型、面額。我需要將可用的、券類型最大的、面額最大的券排到最前面。

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

話不多說,看代碼吧:

package com.test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
 * List多重規(guī)則排序測(cè)試類
 */
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("排序后結(jié)果:");
    for (int i = 0; i <persons.size(); i++) {
      System.out.println(persons.get(i));
    }
  }
  static class Coupon{
    public Integer themeType; //優(yōu)惠券類型
    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} 

排序后結(jié)果:

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}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • java圖搜索算法之DFS與BFS詳解

    java圖搜索算法之DFS與BFS詳解

    這篇文章主要為大家介紹了java數(shù)據(jù)結(jié)構(gòu)中可以秒殺一切圖算法的DFS與BFS作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Java Socket實(shí)現(xiàn)多人聊天系統(tǒng)

    Java Socket實(shí)現(xiàn)多人聊天系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java Socket實(shí)現(xiàn)多人聊天系統(tǒng),具有圖形界面,實(shí)現(xiàn)文件傳輸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java用POI導(dǎo)入導(dǎo)出Excel實(shí)例分析

    Java用POI導(dǎo)入導(dǎo)出Excel實(shí)例分析

    在本篇文章里小編給大家整理的是一篇關(guān)于Java用POI導(dǎo)入導(dǎo)出Excel實(shí)例分析內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-11-11
  • Java設(shè)計(jì)模式之命令模式(Command模式)介紹

    Java設(shè)計(jì)模式之命令模式(Command模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之命令模式(Command模式)介紹,本文講解了Command模式的定義、如何使用命令模式等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 詳解Mybatis注解寫法(附10余個(gè)常用例子)

    詳解Mybatis注解寫法(附10余個(gè)常用例子)

    這篇文章主要介紹了詳解Mybatis注解寫法(附10余個(gè)常用例子),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Java?20在Windows11系統(tǒng)下的簡(jiǎn)易安裝教程

    Java?20在Windows11系統(tǒng)下的簡(jiǎn)易安裝教程

    這篇文章主要給大家介紹了關(guān)于Java?20在Windows11系統(tǒng)下的簡(jiǎn)易安裝教程,學(xué)習(xí)Java的同學(xué),第一步就是安裝好Java環(huán)境,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • SpringMVC4.3?HttpMessageConverter接口實(shí)現(xiàn)源碼分析

    SpringMVC4.3?HttpMessageConverter接口實(shí)現(xiàn)源碼分析

    這篇文章主要為大家介紹了SpringMVC4.3?HttpMessageConverter接口實(shí)現(xiàn)源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 使用spring動(dòng)態(tài)獲取接口的不同實(shí)現(xiàn)類

    使用spring動(dòng)態(tài)獲取接口的不同實(shí)現(xiàn)類

    這篇文章主要介紹了使用spring動(dòng)態(tài)獲取接口的不同實(shí)現(xiàn)類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • IDEA熱部署配置詳細(xì)教程

    IDEA熱部署配置詳細(xì)教程

    這篇文章主要介紹了IDEA熱部署配置詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java Comparable及Comparator接口區(qū)別詳解

    Java Comparable及Comparator接口區(qū)別詳解

    這篇文章主要介紹了Java Comparable及Comparator接口區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論