java使用Comparable对list对象排序

     排序时使用 Comparable 进行排序,利用它强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Collections.sort进行自动排序

 首先创建对象
//作为演示,只包含一小段代码

import java.util.List;

public class Drug implements Comparable{
      private Double drugPrice;
      private int   Similarity=0;//相似度 
    public void setSimilarity(int Similarity){
        this.Similarity=Similarity;
    }
    public Integer getSimilarity(){
        return  Similarity;
    }
    public Double getDrugPrice() {
        return drugPrice;
    }

    public void setDrugPrice(Double drugPrice) {
        this.drugPrice = drugPrice;
    }
    
    @Override
    public int compareTo(Drug o) {
        if(this.Similarity==o.getSimilarity()){
           if( Double.doubleToLongBits(this.drugPrice) == Double.doubleToLongBits(o.getDrugPrice()))  return  0;
           else if( Double.doubleToLongBits(this.drugPrice) > Double.doubleToLongBits(o.getDrugPrice())) return 1;
           else if( Double.doubleToLongBits(this.drugPrice) < Double.doubleToLongBits(o.getDrugPrice())) return -1;   
           else return 0;
        }
        return this.Similarity>o.getSimilarity()?-1:1;
    }
}

    compareTo()方法,返回的值小,排序后位置就在前,如果有多种排序条件,按照排序条件的优先级,优先判断返回值,注意如果相等一定要返回大于等于0的数(最好为0)否则可能报错,Double直接比较大小,可能出现精度问题,先转换成long再比较

   最后只需要在需要排序的地方加上Collections.sort(list);

     //作为演示,仅包含小部分代码

public List getDrugs(){
    List  drugs=drugMapper.selectDrugByWhere(where);
    Collections.sort(drugs);
    return drugs;
}

//写一下,记性不好,以免下次用忘记了

你可能感兴趣的:(java使用Comparable对list对象排序)