package com.taobao.top.analysis.statistics.data; import java.util.Comparator; /** * 用于报表排序 * @author fangweng * */ public class ReportOrderComparator<T> implements Comparator<T> { private int[] column; private boolean[] isDesc; public ReportOrderComparator(int[] column, boolean[] isDesc) { this.column = column; this.isDesc = isDesc; } @Override public int compare(T o1, T o2) { Object[] or1 = (Object[]) o1; Object[] or2 = (Object[]) o2; int compareValue = 0; for (int i = 0; i < column.length; i++) { if (or1[column[i]] instanceof Double) { compareValue = (int) ((Double) or1[column[i]] - (Double) or2[column[i]]); } else compareValue = String.valueOf(or1[column[i]]).compareTo( String.valueOf(or2[column[i]])); if (compareValue != 0) { if (isDesc[i]) return -compareValue; else return compareValue; } } return compareValue; } }