JAVA中使用静态内部类Comparator实现集合的排序
来源:互联网 发布:易语言qq登陆器源码 编辑:程序博客网 时间:2024/06/01 17:22
比起Comparable接口比较器Comparator为我们在排序中提供了更宽松和更加广泛的应用实例:在实际中,常常需要对一个商品按照不同属性来排序,这时我们就能通过写出自己的Comparator来实现不同的排序方式
public class Goods{ private int goodsId; //编号 private String goodsName; //品名 private double goodsOriginalPrice; //原价 private double goodsSellPrice; //卖价 private int goodsInStock; //库存 private ArrayList<String> goodsShowPics; //展示图集合url private ArrayList<String> goodsDetailPics; //商品图集合url private String goodsProducer; //生产者 private String goodsProducePlace; //产地 private Timestamp goodsInDate; //入库时间 private String goodsPackage; //包装内容 private String goodsCM; //产品规格 private String goodsService; //售后服务 private int goodsViewed; //商品浏览量 private int goodsSold; //商品销售量 private double goodsPoint; //商品评分 public Goods(){ } }
例如在上面的商品类中 我们可能会根据商品的价格或者入库时间比较排序
这时如果在类Goods中插入静态内部final Comparator类就可以实现
使用静态内部final类好处在于调用时候结构清晰,调用方便,并且无需重复实例化比较器对象,节省了系统开支
在Goods类中插入如下代码:
/** * 靜態內部類比較按入庫時間 //降序 */ public static final Comparator<Goods> GOODS_BY_INDATE = new Comparator<Goods>(){ public int compare(Goods o1, Goods o2) { return o2.getGoodsInDate().compareTo(o1.getGoodsInDate()); } }; /** * 靜態內部類比較按售價 */ public static final Comparator<Goods> GOODS_BY_SELLPRICE = new Comparator<Goods>() { public int compare(Goods o1, Goods o2) { return (int) (o1.getGoodsSellPrice()-o2.getGoodsSellPrice()); } }; /** * 靜態內部類比較按售價 //降序 */ public static final Comparator<Goods> GOODS_BY_SELLPRICE_DESC = new Comparator<Goods>() { public int compare(Goods o1, Goods o2) { return (int) (o2.getGoodsSellPrice()-o1.getGoodsSellPrice()); } }; /** * 靜態內部類比較按點擊量 //降序 */ public static final Comparator<Goods> GOODS_BY_GOODSVIEWD = new Comparator<Goods>() { public int compare(Goods o1, Goods o2) { // TODO Auto-generated method stub return o2.getGoodsViewed()-o1.getGoodsViewed(); } }; /** * 靜態內部類按銷量排序 //降序 */ public static final Comparator<Goods> GOODS_BY_GOODSSOLD = new Comparator<Goods>() { public int compare(Goods o1, Goods o2) { return o2.getGoodsSold()-o1.getGoodsSold(); } }; /** * 靜態內部類按評分排序 //降序 */ public static final Comparator<Goods> GOODS_BY_POINT = new Comparator<Goods>() { public int compare(Goods o1, Goods o2) { return (int) (o2.getGoodsPoint()-o1.getGoodsPoint()); } };实现了Goods类的多种比较器之后,就可以在程序中调用Collections.sort(arg1,arg2)方法了
例如,对于已经存在的名为showResult的Goods集合用下面的代码就可以实现排序了:
if(sortType.equals("bySold")){ //按銷量時候 Collections.sort(showResult, Goods.GOODS_BY_GOODSSOLD); } if(sortType.equals("byViewed")){ //按點擊量時候 Collections.sort(showResult, Goods.GOODS_BY_GOODSVIEWD); } if(sortType.equals("byInDate")){ //按入庫時間時候 Collections.sort(showResult, Goods.GOODS_BY_INDATE); } if(sortType.equals("byPoint")){ //按評分時候 Collections.sort(showResult, Goods.GOODS_BY_POINT); } if(sortType.equals("byPrice")){ //按價格時候 Collections.sort(showResult, Goods.GOODS_BY_SELLPRICE); } if(sortType.equals("byPriceDown")){ //按價格降序時候 Collections.sort(showResult, Goods.GOODS_BY_SELLPRICE_DESC); }
当然,不使用内部类也是可以的,用到Comparator类,你就可以轻松的按照各种喜欢的方式排序了
阅读全文
0 0
- JAVA中使用静态内部类Comparator实现集合的排序
- JAVA中使用静态内部类Comparator实现集合的排序
- Java 中Comparator 的使用,实现集合排序
- Java 中Comparator 的使用,实现集合排序
- java中静态内部类和非静态内部类的使用
- java静态内部类和匿名内部类的使用
- java 静态内部类的使用
- java 静态内部类的使用
- java 静态内部类的使用
- java 静态内部类的使用
- java comparator 排序 定义比较器内部类的方式排序 通用排序方式 非常灵活
- 静态内部类的使用
- 静态内部类的使用
- java的静态内部类
- java的静态内部类
- Java中Static Class及静态内部类和非静态内部类的不同
- java中静态内部类和非静态内部类的区别
- Java中内部类的使用
- Leetcode:36.Valid Sudoku 初始化数独数组是否合法判断
- Spring
- Struts2(二)---Struts.xml的详细配置
- 微信分享圆角图片有黑色部分
- FastDFS详解(一)——简介
- JAVA中使用静态内部类Comparator实现集合的排序
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之七《查询chaincode》
- 安装使用浏览器插件
- c++ 类的静态成员
- SpringMVC运行流程
- Android 基础复习(四)
- 100G及以上超高速光通信系统关键技术浅析
- 计算机编程语言分类
- 理解CSV格式规范(解析CSV必备)