在Java中对集合当中的对象进行排序

转载自: http://amcucn.iteye.com/blog/270697 

作者:面向对象

近日工作当中需要将一些数据按一定的格式进行排序,而这些数据是从数据库当中查询出来的一些对象的某个属性,无法按此属性进行排序查询。为此想到将对象取出后再将对其按某格式进行排序,这就需要运用到对集合进行排序。经高人指点,发现以下方法比较好用,特记下一笔。

 

Java代码 复制代码  收藏代码
  1. /**  
  2.      * 根据分类得到与分类相关的所有品牌信息  
  3.      */  
  4.     private Collection getBrandByType(Integer typeId) {   
  5.         String hql = "select distinct pt.box.productInfo.brand From ProductTop As pt where pt.box.productInfo.type.id=" + typeId ;   
  6.         List allBrandList = utilDao.executeQuery(hql);   
  7.         //对集合进行排序   
  8.         Collections.sort(allBrandList, new compareList() );   
  9.         return allBrandList;   
  10.     }   
  11.        
  12.     /**  
  13.      * 比较两个对象的大小,实现Comparator接口  
  14.      */  
  15.     private class compareList implements Comparator{   
  16.         public int compare(Object o1, Object o2) {   
  17.             Catagory c1 = (Catagory)o1;   
  18.             Catagory c2 = (Catagory)o2;   
  19.             String catagoryName1 = c1.getName();   
  20.             String catagoryName2 = c2.getName();   
  21. //通过比较两个字符串对象来排序。此处可以根据自己的需要写两个对象的具体比较内容   
  22.         return catagoryName1.compareTo(catagoryName2);   
  23.         }   
  24.            
  25.     }  
/**	 * 根据分类得到与分类相关的所有品牌信息	 */	private Collection getBrandByType(Integer typeId) {		String hql = "select distinct pt.box.productInfo.brand From ProductTop As pt where pt.box.productInfo.type.id=" + typeId ;		List allBrandList = utilDao.executeQuery(hql);		//对集合进行排序		Collections.sort(allBrandList, new compareList() );		return allBrandList;	}		/**	 * 比较两个对象的大小,实现Comparator接口	 */	private class compareList implements Comparator{		public int compare(Object o1, Object o2) {			Catagory c1 = (Catagory)o1;			Catagory c2 = (Catagory)o2;			String catagoryName1 = c1.getName();			String catagoryName2 = c2.getName();//通过比较两个字符串对象来排序。此处可以根据自己的需要写两个对象的具体比较内容		return catagoryName1.compareTo(catagoryName2);		}			}

 

大致步骤如下:
首先通过一般的查询得到一组对象集合此处为:allBrandList 。然后使用Collections.sort方法进行排序,在这个方法当中需要一个实现了Comparator接口的类用来比较两个对象大小。
至于两个对象的大小如何比较,是由自己来定义的,此处只使用了String类当中的compareTo方法,也就是Java当中已定义好了的字符比较方法。如果我们有自己的特别需要,则需要自己重写此方法。
关键的代码:

Java代码 复制代码  收藏代码
  1. Collections.sort(allBrandList, new compareList());  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值