java组合排序
来源:互联网 发布:windows日志服务器 编辑:程序博客网 时间:2024/06/04 18:49
package com.pub.utils;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import org.apache.commons.beanutils.BeanComparator;import org.apache.commons.collections.ComparatorUtils;import org.apache.commons.collections.comparators.ComparableComparator;import org.apache.commons.collections.comparators.ComparatorChain;import org.apache.commons.lang3.StringUtils;import com.alibaba.fastjson.JSONObject;import com.pub.model.AttractionInfo;/** * * @Description: 组合排序 * @author chenweiming * @date 2017-4-17 下午5:12:35 * */public class MultiSortComparator<T>{ public MultiSortComparator() { } public void sort(List<T> result,List<SortField> sortFileds){ if(result == null || sortFileds == null){ return; } Comparator comparator = ComparableComparator.getInstance(); comparator = ComparatorUtils.nullLowComparator(comparator); //允许null comparator = ComparatorUtils.reversedComparator(comparator); //逆序 ArrayList<Object> sortFields = new ArrayList<Object>(); for(SortField sortField : sortFileds){ BeanComparator beanC = null; if(StringUtils.isNotBlank(sortField.getName()) && sortField.getSortType() != null){ if(sortField.getSortType().intValue() == SortField.SortType.SORT_DESC){ beanC = new BeanComparator(sortField.getName(),comparator); }else{ beanC = new BeanComparator(sortField.getName()); } sortFields.add(beanC); } } if(sortFields.size() > 0){ ComparatorChain multiSort = new ComparatorChain(sortFields); Collections.sort(result,multiSort); } } public static void main(String[] args) { List<AttractionInfo> result = new ArrayList<AttractionInfo>(); AttractionInfo info1 = new AttractionInfo(); info1.setTitle("aaaaa"); info1.setCommNum(92); info1.setAverage(2D); info1.setDistances(2D); AttractionInfo info2 = new AttractionInfo(); info2.setTitle("bbbbb"); info2.setCommNum(1); info2.setAverage(2D); info2.setDistances(2D); AttractionInfo info3 = new AttractionInfo(); info3.setTitle("ccccc"); info3.setCommNum(8); info3.setAverage(2D); info3.setDistances(2D); AttractionInfo info4 = new AttractionInfo(); info4.setTitle("ddddd"); info4.setCommNum(8); info4.setAverage(10D); info4.setDistances(2D); result.add(info1); result.add(info2); result.add(info3); result.add(info4); for(AttractionInfo tmp : result){ System.out.println(tmp.getTitle()); } List<SortField> sortFileds = new ArrayList<SortField>(); SortField sortField = new SortField("recWeight",SortField.SortType.SORT_DESC); sortFileds.add(sortField); SortField sortField1 = new SortField("commNum",SortField.SortType.SORT_ASC); sortFileds.add(sortField1); MultiSortComparator<AttractionInfo> com = new MultiSortComparator<AttractionInfo>(); com.sort(result, sortFileds); System.out.println("======递增======"); for(AttractionInfo tmp : result){ System.out.println(JSONObject.toJSON(tmp)); } }}
1 0
- java组合排序
- java算法--字符组合排序
- java字符串、排序组合问题
- java排序算法_012组合排序
- java算法之字符组合排序
- 排序组合
- Java打印一组数字的全部排序组合
- java多个一维数组进行组合排序 笛卡尔积
- Java使用Collections.sort进行组合分类排序
- java多个一维数组进行组合排序 笛卡尔积
- 组合-Java
- Java 组合
- java组合
- 排序算法的组合
- C# 字符串排序组合
- 列出所有组合排序
- 数组-排序-邮票组合
- 排序组合回溯算法
- Java进阶(四)Java反射TypeToken解决泛型运行时类型擦除问题
- SD 分区作为跟文件系统 启动Linux
- css初始化
- keil5在原有工程上修改工程名
- Android 监听 WiFi 开关状态
- java组合排序
- springboot如何接入dubbo
- FL2440添加DS18B20驱动
- Lucene4.4.0几种分词方法
- Java进阶(五)Junit测试
- Ajax网络请求基本用法
- 当在一个方法中需要返回多个参数时的做法
- 遍历显示时一行白色一行灰色效果
- JQuery中$.ajax()方法参数详解