package com.test.order.orderutil;
import java.lang.reflect.Method;
import java.text.Collator;
import org.apache.commons.lang3.StringUtils;
public class SorterUtil {
public static int compare(Object o1, Object o2) {
Object o1sorterColumn1 = getFieldByReflect(o1,SorterColumnGroupUtil.getColumn1());
Object o1sorterColumn2 = getFieldByReflect(o1,SorterColumnGroupUtil.getColumn2());
Object o1sorterColumn3 = getFieldByReflect(o1,SorterColumnGroupUtil.getColumn3());
Object o2sorterColumn1 = getFieldByReflect(o2,SorterColumnGroupUtil.getColumn1());
Object o2sorterColumn2 = getFieldByReflect(o2,SorterColumnGroupUtil.getColumn2());
Object o2sorterColumn3 = getFieldByReflect(o2,SorterColumnGroupUtil.getColumn3());
Object sorterColumnAsc1 = SorterColumnGroupUtil.getColumn1Asc();
Object sorterColumnAsc2 = SorterColumnGroupUtil.getColumn2Asc();
Object sorterColumnAsc3 = SorterColumnGroupUtil.getColumn3Asc();
if(sorterColumnAsc1 != null){//判断 1主
if(Constant.ASC.equals(sorterColumnAsc1)){//1 主升
if(sorterColumnAsc2 != null){//判断 2主
if(Constant.ASC.equals(sorterColumnAsc2)){//2 主升
if(sorterColumnAsc3 != null){//判断3主
if(Constant.ASC.equals(sorterColumnAsc3)){//3 主升
return compareAsc(o1sorterColumn1,o2sorterColumn1) == 0?(compareAsc(o1sorterColumn2,o2sorterColumn2) == 0?
compareAsc(o1sorterColumn3,o2sorterColumn3)
:compareAsc(o1sorterColumn2,o2sorterColumn2))
:compareAsc(o1sorterColumn1,o2sorterColumn1);//1升 2升 3升
}else if(Constant.DESC.equals(sorterColumnAsc3)){//3主降
return compareAsc(o1sorterColumn1,o2sorterColumn1) == 0?(compareAsc(o1sorterColumn2,o2sorterColumn2) == 0?
compareDesc(o1sorterColumn3,o2sorterColumn3)
:compareAsc(o1sorterColumn2,o2sorterColumn2))
:compareAsc(o1sorterColumn1,o2sorterColumn1);//1升 2升 3降
}
}else{//无 3主
return compareAsc(o1sorterColumn1,o2sorterColumn1) == 0?(compareAsc(o1sorterColumn2,o2sorterColumn2))
:compareAsc(o1sorterColumn1,o2sorterColumn1);//1升 2升
}
}else if(Constant.DESC.equals(sorterColumnAsc2)){//2主降
if(sorterColumnAsc3 != null){//判断3主
if(Constant.ASC.equals(sorterColumnAsc3)){//3 主升
return compareAsc(o1sorterColumn1,o2sorterColumn1) == 0?(compareDesc(o1sorterColumn2,o2sorterColumn2) == 0?
compareAsc(o1sorterColumn3,o2sorterColumn3)
:compareDesc(o1sorterColumn2,o2sorterColumn2))
:compareAsc(o1sorterColumn1,o2sorterColumn1);//1升 2降 3升
}else if(Constant.DESC.equals(sorterColumnAsc3)){//3主降
return compareAsc(o1sorterColumn1,o2sorterColumn1) == 0?(compareDesc(o1sorterColumn2,o2sorterColumn2) == 0?
compareDesc(o1sorterColumn3,o2sorterColumn3)
:compareDesc(o1sorterColumn2,o2sorterColumn2))
:compareAsc(o1sorterColumn1,o2sorterColumn1);//1升 2降 3降
}
}else{//无 3主
return compareAsc(o1sorterColumn1,o2sorterColumn1) == 0?compareDesc(o1sorterColumn2,o2sorterColumn2)
:compareAsc(o1sorterColumn1,o2sorterColumn1);//1升 2降
}
}
}else{//无 2主
return compareAsc(o1sorterColumn1,o2sorterColumn1);//1 升
}
}else if(Constant.DESC.equals(sorterColumnAsc1)){//1 主降
if(sorterColumnAsc2 != null){//判断 2主
if(Constant.ASC.equals(sorterColumnAsc2)){//2 主升
if(sorterColumnAsc3 != null){//判断3主
if(Constant.ASC.equals(sorterColumnAsc3)){//3 主升
return compareDesc(o1sorterColumn1,o2sorterColumn1) == 0?(compareAsc(o1sorterColumn2,o2sorterColumn2) == 0?
compareAsc(o1sorterColumn3,o2sorterColumn3)
:compareAsc(o1sorterColumn2,o2sorterColumn2))
:compareDesc(o1sorterColumn1,o2sorterColumn1);//1降 2升 3升
}else if(Constant.DESC.equals(sorterColumnAsc3)){//3主降
return compareDesc(o1sorterColumn1,o2sorterColumn1) == 0?(compareAsc(o1sorterColumn2,o2sorterColumn2) == 0?
compareDesc(o1sorterColumn3,o2sorterColumn3)
:compareAsc(o1sorterColumn2,o2sorterColumn2))
:compareDesc(o1sorterColumn1,o2sorterColumn1);// 1降 2升 3降
}
}else{//无 3主
return compareDesc(o1sorterColumn1,o2sorterColumn1) == 0?compareAsc(o1sorterColumn2,o2sorterColumn2)
:compareDesc(o1sorterColumn1,o2sorterColumn1);// 1降 2升
}
}else if(Constant.DESC.equals(sorterColumnAsc2)){//2主降
if(sorterColumnAsc3 != null){//判断3主
if(Constant.ASC.equals(sorterColumnAsc3)){//3 主升
return compareDesc(o1sorterColumn1,o2sorterColumn1) == 0?(compareDesc(o1sorterColumn2,o2sorterColumn2) == 0?
compareAsc(o1sorterColumn3,o2sorterColumn3)
:compareDesc(o1sorterColumn2,o2sorterColumn2))
:compareDesc(o1sorterColumn1,o2sorterColumn1);//1 2 降 , 3 升
}else if(Constant.DESC.equals(sorterColumnAsc3)){//3主降
return compareDesc(o1sorterColumn1,o2sorterColumn1) == 0?(compareDesc(o1sorterColumn2,o2sorterColumn2) == 0?
compareDesc(o1sorterColumn3,o2sorterColumn3)
:compareDesc(o1sorterColumn2,o2sorterColumn2))
:compareDesc(o1sorterColumn1,o2sorterColumn1);// 1 2 3 降
}
}else{//无 3主
return compareDesc(o1sorterColumn1,o2sorterColumn1) == 0?compareDesc(o1sorterColumn2,o2sorterColumn2)
:compareDesc(o1sorterColumn1,o2sorterColumn1);// 1 2 降
}
}
}else{//无 2主
return compareDesc(o1sorterColumn1,o2sorterColumn1);// 1降
}
}
}else{//无 1 主
return 0;
}
return 0;
}
/**
* 自动寻找合适的升序序选择器
* @param o1
* @param o2
* @return
*/
public static int compareAsc(Object o1,Object o2){
if (o1 instanceof String) { //字符串
return compareAsc( (String) o1, (String) o2);
}else if (o1 instanceof Integer) { //Integer
return compareAsc( (Integer) o1, (Integer) o2);
}else if (o1 instanceof Long) { //Long
return compareAsc( (Long) o1, (Long) o2);
}else {
System.err.println("未找到合适的比较器"); //找不到
return 0;
}
}
/**
* 自动寻找合适的降序序序选择器
* @param o1
* @param o2
* @return
*/
public static int compareDesc(Object o1,Object o2){
if (o1 instanceof String) { //字符串
return compareDesc( (String) o1, (String) o2);
}else if (o1 instanceof Integer) { //Integer
return compareDesc( (Integer) o1, (Integer) o2);
}else if (o1 instanceof Long) { //Integer
return compareDesc( (Long) o1, (Long) o2);
}else {
System.err.println("未找到合适的比较器"); //找不到
return 1;
}
}
/**
* 升序比较字符串
* @param s1
* @param s2
* @return
*/
public static int compareAscs(String s1, String s2){
int result = 0;
if(StringUtils.isBlank(s1)){
result = 1;
}else if(StringUtils.isBlank(s2)){
result = -1;
}else{
result = s1.compareTo(s2);
}
return result;
}
/**
* 降序比较字符串
* @param s1
* @param s2
* @return
*/
public static int compareDescs(String s1, String s2){
int result = 0;
if(StringUtils.isBlank(s1)){
result = 1;
}else if(StringUtils.isBlank(s2)){
result = -1;
}else{
result = s2.compareTo(s1);
}
return result;
}
/**
* 升序比较数值
* @param s1
* @param s2
* @return
*/
public static int compareAsc(Integer s1, Integer s2){
int result = 0;
if(s1 <= 0){
result = 1;
}else if(s2 <= 0){
result = -1;
}else{
result = s1.compareTo(s2);
}
retur
没有合适的资源?快使用搜索试试~ 我知道了~
Jtable表格分三组排序(支持中文)
共37个文件
class:13个
java:10个
png:6个
5星 · 超过95%的资源 需积分: 31 39 下载量 138 浏览量
2016-12-25
19:42:03
上传
评论
收藏 9.37MB ZIP 举报
温馨提示
Jtable表格排序,这两天公司让做一个Jtable表格的排序,首先按A列排序,在A列相等时按B列排序,B列相等时按C列排序,ABC三列可以任意指定,最多分三列,这样的一个需求。
资源推荐
资源详情
资源评论
收起资源包目录
tableOrderTest.zip (37个子文件)
tableOrderTest
bin
com
test
order
orderutil
SorterColumnGroupUtil.class 2KB
Constant.class 396B
SorterUtil.class 6KB
TableOrderSorter.class 778B
User.class 3KB
TableOrder3TableMode.class 3KB
TableOrder3Table$2.class 2KB
TableOrder3Table.class 4KB
TableHeaderButton.class 810B
TableOrder3Test$1.class 2KB
TableOrder3Test.class 667B
TableOrder3Table$1.class 2KB
chinaorder
ComparatorList.class 319B
.settings
org.eclipse.core.resources.prefs 77B
org.eclipse.jdt.core.prefs 598B
src
com
test
order
orderutil
SorterColumnGroupUtil.java 2KB
Constant.java 150B
SorterUtil.java 10KB
User.java 2KB
TableOrderSorter.java 266B
TableOrder3TableMode.java 2KB
TableOrder3Test.java 2KB
TableHeaderButton.java 562B
TableOrder3Table.java 6KB
chinaorder
ComparatorList.java 1KB
.project 390B
.classpath 496B
icon
arr-down2.png 261B
arr-up2.png 239B
arr-up3.png 271B
arr-down3.png 270B
arr-up1.png 221B
arr-down1.png 236B
lib
icu4j-core-mojang-51.2.jar 1.56MB
commons-lang3-3.3.1.jar 403KB
icu4j-52.1-sources.jar 1.89MB
com.ibm.icu-4.4.2.jar 6.38MB
共 37 条
- 1
资源评论
- -Space2018-09-07不错,可以使用,谢谢分享
大帅帅呀
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功