排序工具类
2016-07-28 11:41
369 查看
如果是多个字段,按添加顺序优先级排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.collections.ComparatorUtils;
import org.apache.commons.collections.comparators.ComparableComparator;
import org.apache.commons.collections.comparators.ComparatorChain;
/**
*
* @ClassName: BeanSortUtils
* @Description: bean的list集合排序通用类
* @author ysq
* @date 2016年5月20日 上午10:39:56
*
*/
public class BeanSortUtils{
/**
*
* @param dataList 排序数据
* @param sortFieldsList 要排序的字段集合
* @param sortTypeList 排序字段是否逆序
* @return 排序后的list集合
*/
public static List<?> sortBeanList(List<?> dataList,List<String> sortFieldsList,List<Boolean> sortTypeList){
Comparator comparator=ComparableComparator.getInstance();
comparator=ComparatorUtils.nullLowComparator(comparator);//允许null
comparator=ComparatorUtils.reversedComparator(comparator);
List<Object> comparatorList=new ArrayList<Object>();
for(int i=0;i<sortFieldsList.size();i++){
String sortField=sortFieldsList.get(i);
if(sortTypeList.get(i)==true){
comparatorList.add(new org.apache.commons.beanutils.BeanComparator(sortField,comparator));
}else{
comparatorList.add(new org.apache.commons.beanutils.BeanComparator(sortField));
}
}
ComparatorChain multiSort=new ComparatorChain(comparatorList);
Collections.sort(dataList,multiSort);
return dataList;
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.collections.ComparatorUtils;
import org.apache.commons.collections.comparators.ComparableComparator;
import org.apache.commons.collections.comparators.ComparatorChain;
/**
*
* @ClassName: BeanSortUtils
* @Description: bean的list集合排序通用类
* @author ysq
* @date 2016年5月20日 上午10:39:56
*
*/
public class BeanSortUtils{
/**
*
* @param dataList 排序数据
* @param sortFieldsList 要排序的字段集合
* @param sortTypeList 排序字段是否逆序
* @return 排序后的list集合
*/
public static List<?> sortBeanList(List<?> dataList,List<String> sortFieldsList,List<Boolean> sortTypeList){
Comparator comparator=ComparableComparator.getInstance();
comparator=ComparatorUtils.nullLowComparator(comparator);//允许null
comparator=ComparatorUtils.reversedComparator(comparator);
List<Object> comparatorList=new ArrayList<Object>();
for(int i=0;i<sortFieldsList.size();i++){
String sortField=sortFieldsList.get(i);
if(sortTypeList.get(i)==true){
comparatorList.add(new org.apache.commons.beanutils.BeanComparator(sortField,comparator));
}else{
comparatorList.add(new org.apache.commons.beanutils.BeanComparator(sortField));
}
}
ComparatorChain multiSort=new ComparatorChain(comparatorList);
Collections.sort(dataList,multiSort);
return dataList;
}
}
相关文章推荐
- 在命令行用 sort 进行排序
- 文件遍历排序函数
- 关于C#中排序函数的总结
- C#选择排序法实例分析
- C#、ASP.NET通用扩展工具类之TypeParse
- C#插入法排序算法实例分析
- C#实现Datatable排序的方法
- MYSQL必知必会读书笔记第五章之排序检索数据
- SQLSERVER的排序问题结果不是想要的
- Ruby实现插入排序算法及进阶的二路插入排序代码示例
- Windows Powershell排序和分组管道结果
- C#、ASP.NET通用扩展工具类之LogicSugar
- C#通过IComparable实现ListT.sort()排序
- C#选择法排序实例分析
- SQL学习笔记四 聚合函数、排序方法
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- C#对list列表进行随机排序的方法
- jQuery拖动元素并对元素进行重新排序
- 将MySQL查询结果按值排序的简要教程
- 深入解析桶排序算法及Node.js上JavaScript的代码实现