java 二维报表排序

来源:互联网 发布:域名注册步骤 编辑:程序博客网 时间:2024/06/15 19:22

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import com.wind.po.ColSortObj;
import com.wind.sort.SortByCol;

public class DataGridTool {

 public int[][] datagird = null;
 public int row=0;
 public int col=0;
 
 public DataGridTool() {
  
 }
 
 public DataGridTool(int[][] datagird) {
  this.datagird = datagird;
  this.row = datagird.length;
  this.col = datagird[0].length;
 }
 

 
 public int[][] sortByCol(int sortCol, boolean isDesc) {
  int[][] resDataGrid = new int[row][col+1];
  List<ColSortObj> colSortObjList = getColInfo(sortCol);
  Collections.sort(colSortObjList, new SortByCol(isDesc));
  int line = 0;
  for(ColSortObj colSortObj : colSortObjList) {
   for(int i=0;i<35;i++) {
    System.out.print(datagird[colSortObj.getRow()][i]+":");
    resDataGrid[line][i] = datagird[colSortObj.getRow()][i];
   }
   resDataGrid[line][col] = colSortObj.getRow();//行号
   line++;
   System.out.print("\n");
  }
  return resDataGrid;
 }
 
 private List<ColSortObj> getColInfo(int col) {
  List<ColSortObj> colSortObjList = new ArrayList<ColSortObj>();
  int row = this.row;
  for(int i=0;i<row;i++) {
   ColSortObj colSortObj = new ColSortObj();
   colSortObj.setRow(i);
   colSortObj.setVal(datagird[i][col]);
   colSortObjList.add(colSortObj);
  }
  return colSortObjList;
 }
 
 public static void main(String[] args) {
//  generateData();
//  intialDataGrid(170,35);//test
//  long starttime = System.currentTimeMillis();
////  for(int i=0;i<100000;i++) {
//   int[][] resDataGrid = sortByCol(1, true);
////  }
//  long endtime = System.currentTimeMillis();
//  System.out.println("time:::"+(endtime-starttime));
  
 }
}

 

import java.util.Comparator;

import com.wind.po.ColSortObj;

public class SortByCol implements Comparator {
 
 private boolean isDesc;
 
 public SortByCol() {
  
 }
 public SortByCol(boolean isDesc) {
  this.isDesc = isDesc;
 }
 
 public int compare(Object o1, Object o2) {
  
  ColSortObj colSortObj1 = (ColSortObj) o1;
  ColSortObj colSortObj2 = (ColSortObj) o2;
  try {
   if(isDesc) {
    if (colSortObj1.getVal() <= colSortObj2.getVal())
     return 1;
    return -1;
   } else {
    if (colSortObj1.getVal() <= colSortObj2.getVal())
     return -1;
    return 1;
   }
  } catch (Exception e) {
   return 0;
  }
 }
 
 
}

 

 

public class ColSortObj implements java.io.Serializable {
 
 private int row;
 private int val;
 
 public ColSortObj() {
  
 }
 
 public int getRow() {
  return row;
 }
 public void setRow(int row) {
  this.row = row;
 }
 public int getVal() {
  return val;
 }
 public void setVal(int val) {
  this.val = val;
 }
 
 
}

 

0 0
原创粉丝点击