`
零下。
  • 浏览: 28566 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

今天遇到一个排序的需求..自己从网络上参考下写了个公共的方法

阅读更多
package com.liuyc.drools.test;

import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

@SuppressWarnings("unchecked")
public class ComparatorUtil implements Comparator<Object> {

private String method;

private Class<Object> objClass;


public String getMethod() {
return method;
}


public void setMethod(String method) {
this.method = method;
}


public Class<Object> getObjClass() {
return objClass;
}


public void setObjClass(Class<Object> objClass) {
this.objClass = objClass;
}

public ComparatorUtil(Class objClass, String method) {

this.setMethod(method);
this.setObjClass(objClass);
}

/**
* 实现list中bean的某个属性(Int/Integer类型)的升降排序.
* @param list 需要排序的类
* @param objClass bean的class
* @param getMethod 需要排序属性的get方法
* @param order true升序,false降序.
*/
public static void compareList(List list,Class objClass,String getMethod,boolean order){

ComparatorUtil util = new ComparatorUtil(objClass, getMethod);

if (order) {
Collections.sort(list, util);
}else{
Collections.sort(list, util);
//这步骤觉得有点怪..
Collections.reverse(list);
}
}


public int compare(Object  obj1, Object  obj2) {

int value1 = this.getObjValue(obj1);

int value2 = this.getObjValue(obj2);

if ( value1 < value2 ) {
return -1;
} else if (value1 == value2) {
return 0;
}else{
return 1;
}
}

/**
* 获得对象属性的值.
* @param obj
* @return .
*/
private int getObjValue(Object obj) {

Method getMethod = null;

int getValue = 0;

try {
getMethod = obj.getClass().getMethod(this.getMethod(), new  Class[] {});

Object value = getMethod.invoke(obj, new Object[] {});

if (value != null) {

if (value instanceof Integer) {

getValue = Integer.parseInt(value.toString());
}
}

} catch (Exception e) {
e.printStackTrace();
}
return getValue;
}

}


发了点时间写了下.感觉还是有点不对..请求高手改正.....
参考路径:http://topic.csdn.net/u/20090523/17/05771830-8b54-4d91-ab6b-ddde8557a9fc.html 我只是将对象改成反射来写..顺便加了点小把戏..
分享到:
评论

相关推荐

    1.公共基础课.zip

    《公共基础课》压缩包中的资源,显然涵盖了IT领域的基础知识,是学习者入门或巩固技能的重要参考资料。由于没有具体的标签信息,我们可以从通用的IT基础知识出发,探讨可能包含的主题。 首先,"公共基础课"通常包括...

    (调查报告)11-06关于农民工学习需求的调查报告.zip

    标题"(调查报告)11-06关于农民工学习需求的调查报告.zip"揭示了这是一个关于农民工学习需求的研究调查,日期为11月6日,以文档压缩包的形式存在。通常,这样的文件可能包含了对农民工群体进行的详细调研,目的是...

    Javascript的算法_JavaScript_下载.zip

    本压缩包"Javascript的算法_JavaScript_下载.zip"可能包含了一个名为"Algorithm-master"的文件夹,这通常意味着它是一个关于JavaScript算法的项目源码库,供学习者参考和实践。 在JavaScript中,常见的算法包括排序...

    作品汇总-刘卓.zip

    1. **产品管理流程**:通过分析项目文件夹,可以学习到产品经理如何从零开始规划一个产品,包括需求收集、市场调研、功能定义、优先级排序、原型设计等步骤。 2. **需求分析**:刘卓的PR文档将揭示他如何理解和提炼...

    C++项目+学生成绩管理系统.docx

    参考文献包括谭浩强的《C++程序设计》、高等教育出版社的《全国计算机等级考试公共基础知识》以及一本关于高质量C++的网络电子书。 源代码分布在多个文件中,如`Main.cpp`、`Class.h`和`Menu.h`,分别实现了主程序...

    蓝桥杯2012年-2017决赛&省赛真题.zip

    这个压缩文件里的每个子文件可能是一个题目描述文档,附带题目要求和样例输入输出,有时还会包含参考解答和评分标准。参赛者或学习者可以通过解压文件,逐一练习这些题目,通过实战提升自己的编程素养和应试能力。 ...

    完整版易语言常用算法.rar

    了解它们的工作原理和性能差异,能帮助程序员根据实际需求选择合适的排序方法。 2. 搜索算法:二分查找、线性查找等搜索算法也是易语言中常见的。二分查找适用于有序数组,效率高;线性查找则适用于无序数据,但...

    c++课设总结报告(项目管理系统).pdf

    - **接口设计**:定义类的公共方法,如`addProject()`、`editProject()`、`deleteProject()`、`searchProject()`和`sortProjects()`,分别对应项目信息的增删改查和排序。 - **实现**:在类的实现中,需要编写上述...

    delphi常用算法.PDF

    4. **动态规划**:动态规划是一种解决复杂问题的有效方法,如背包问题、最长公共子序列等。理解动态规划的思想,能帮助我们解决很多具有重叠子问题和最优子结构的问题。 5. **字符串处理**:涉及到字符串匹配算法,...

    《阿里技术参考图册》(算法+研发)

    《阿里技术参考图册》是一份综合性的技术资料,涵盖了算法和研发两个核心领域,旨在为IT从业者提供深入的理解和实践指导。这份图册由两部分组成:《阿里技术参考图册》(研发篇)和《阿里技术参考图册》(算法篇),...

    Algorithm-Useful_Pieces_Of_Code.zip

    在实际编程中,我们常常遇到各种各样的问题,如数据排序、搜索、图论、动态规划等,这些问题的高效解决往往离不开精心设计的算法。这个代码集合中,包含了这些常见问题的典型算法实现,可以作为学习和参考的宝贵资源...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    JAVA语言与面向对象程序设计题解及实验指导实验三 程序代码

    在这个过程中,遇到问题时,学生应参考“JAVA语言与面向对象程序设计题解及实验指导”提供的解答和提示,以获取解决问题的思路和方法。这本指南通常会提供详细的解释、示例代码和常见陷阱的警告,以帮助学生更好地...

    计算机专升本所有专业课公共课考试试题

    软件工程部分可能会涉及需求分析、设计模式、版本控制、测试方法等内容。理解软件开发的生命周期,以及如何有效地进行团队协作和项目管理。 八、大纲解析 专升本考试大纲是备考的关键,它明确了考试的范围和深度。...

    刘玉贵算法平时作业及解答

    【算法】是计算机科学的核心领域之一,它涉及一系列解决问题的方法,包括数据结构、排序、搜索、图论、最优化和动态规划等。刘玉贵教授的算法课程旨在帮助学生掌握这些基本概念,提高分析和解决问题的能力。这个...

    数据结构与算法设计(冯志全) 答案

    “数据结构答案”标签表明提供的压缩文件可能包含了这本教材的练习题答案,这对自学或者复习的学生来说是一个宝贵的资源,可以用来检查自己的解题思路是否正确,或者在遇到困难时找到参考。文件名"505"可能是指第505...

    计算机算法

    4. **动态规划**:一种通过构建子问题来解决原问题的方法,常用于解决背包问题、最长公共子序列、最短路径等问题。 5. **贪心算法**:每次做出局部最优选择,希望得到全局最优解。例如,霍夫曼编码就是贪心算法的...

    Java项目(学生信息管理系统).pdf

    【Java项目(学生信息管理系统)】是一个典型的Java编程...综上所述,Java项目(学生信息管理系统)是一个涵盖需求分析、设计、编码、测试和维护全过程的实例,对于学习Java编程和理解信息系统开发流程具有很高的参考价值。

    C++项目+学生成绩管理系统 (2).pdf

    参考文献包括《C++程序设计》(谭浩强著)、《全国计算机等级考试 公共基础知识》(高等教育出版社)以及网络上的《高质量C++》电子书。源代码分别存储在"Main.cpp"和其他相关文件中。 总之,该C++项目是一个全面的...

    北京公交线路查询模型与算法设计.pdf

    当乘客无法立即从一个站点换乘到另一个站点时,他们可能会在附近寻找其他站点进行换乘。为了解决这个问题,文章同样采用了多目标规划模型,并设计了改进的最少换乘次数下的搜索方法。 #### 查询系统设计 在设计了...

Global site tag (gtag.js) - Google Analytics