Java集合排序方法

前一段时间写过的一个集合排序的方法,可以按照集合中存放Bean的任意属性进行排序。

/**
 * 按照指定属性,对List集合进行排序。
 * 
 * @param list bean集合
 * @param sortBy 要进行排序的bean中的属性
 * @param sort 升序或降序
 */
public static <T> void sort(List<T> list, final String sortBy,final String sort)  {
	if (list == null || sortBy == null ||sortBy.equals("")|| list.isEmpty())
		return;
	Collections.sort(list, new Comparator<T>() {
		@SuppressWarnings("unchecked")
		public int compare(T t1, T t2) {
			Object o1 = null;
			Object o2 = null;
			try {
				o1 = ReflexUtil.getObjFieldValue(t1, sortBy);
				o2 = ReflexUtil.getObjFieldValue(t2, sortBy);
			} catch (Exception e) {
				e.printStackTrace();
			}
			int result = 0;
			if(o1==null){
				result=-1;
			}
			else if(o2==null){
				result=1;
			}
			//字符串按照拼音排序
			else if (o1 instanceof String) {
				result = Collator.getInstance(Locale.CHINA).compare(o1, o2);
			} else {
				result = ((Comparable) o1).compareTo(o2);
			}
		
			if(DESC.equalsIgnoreCase(sort)){
				result=0-result;
			}
			return result;

		}
	});

}

注:ReflexUtil.getObjFieldValue(t1, sortBy) 用反射技术获取对象t1中sortBy属性的值。

yava /
in categories tagged with