`
li445970924
  • 浏览: 21668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一个小小的排序类

阅读更多

import java.math.BigDecimal;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.beanutils.PropertyUtils;
/**
 * 排序类 目前只支持当前页面排序
 * 使用说明:SortUtil su  = SortUtil.newInstance();
 * su.setParam("你想排序的字段") 
 * su.toSort()方法 见方法说明
 * @author litao
 */
@SuppressWarnings("unchecked")
public class SortUtil implements Comparator <Object>{
	private static String t; 
	private static SortUtil su = null; 
	
	public SortUtil(){} 
	/**
	 * 要排序的字段名必需的
	 */
	public void setParam(String param) { 
		t=param; 
	} 
	public synchronized static SortUtil newInstance(){ 
		if(su==null){
			su = new SortUtil(); 
		}
		return su; 
	}
	public int compare(Object o1, Object o2) { 
		String value1 = String.valueOf(getFieldValue(o1,t)); 
		String value2 = String.valueOf(getFieldValue(o2,t));
		try { 
			BigDecimal b1=BigDecimal.valueOf(Double.valueOf(value1));
			BigDecimal b2=BigDecimal.valueOf(Double.valueOf(value2));
			return b1.subtract(b2).intValue(); 
		} catch (Exception e) { 
			return value1.compareTo(value2); 
		} 
	} 
	
	/**
	 * 升序(从小到大)
	 * @param list
	 * @return
	 */
	private List upSort(List list){ 
		Collections.sort(list, SortUtil.newInstance()); 
		return list; 
	}
	/**
	 * 降序(升序之后反转)
	 * @param list
	 * @return
	 */
	private List downSort(List list){ 
		this.upSort(list); 
		Collections.reverse(list); 
		return list; 
	} 
	/**
	 * 通过属性名获得对象的值
	 * @param entity
	 * @param propertyName
	 * @return
	 */
	private Object getFieldValue(Object entity , String propertyName ){ 
		Object obj=null;
			try {
				obj=PropertyUtils.getProperty(entity,propertyName);
			} catch (Exception e) {
				e.printStackTrace();
			}		
		return obj;
	}
	/**
	 * @param list
	 * @param orderByType 降序还是升序
	 * @return
	 */
	public List toSort(List list,String orderByType){
		if("true".equals(orderByType)){
			return upSort(list);
		}else{
			return downSort(list);
		}
	}
}
分享到:
评论

相关推荐

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...

    小小图书馆

    "小小图书馆"是一个基于C++编写的图书管理系统,旨在帮助初学者理解面向对象编程和文件操作等核心概念。这个系统提供了图书管理和读者管理的功能,能够有效地组织和存储数据,并将其持久化保存到文件中,方便后续...

    小小资源管理

    1. SortListCtrl.cpp:这个文件可能包含了一个自定义的列表控件实现,用于显示和排序数据。在资源管理器中,排序功能是非常重要的,用户可以通过它来按名称、大小、日期等属性对资源进行排列。 2. PowerDlg.cpp、...

    plist文件排序输出

    本话题聚焦于如何读取Plist文件,对其中的数据进行排序,然后将排序后的数据保存为一个新的词典,并存储到应用的Document目录下。以下是一系列详细步骤和相关知识点: 1. **Plist文件的读取**: 首先,你需要使用`...

    学生成绩管理小小小小系统

    例如,可以创建一个`Student`类,包含学生的ID、姓名、各科成绩等属性。 2. **输入/输出处理**:系统需要能够从用户那里获取数据,如通过命令行界面或简单的图形用户界面(GUI)。C++提供了标准输入输出流...

    自己做的一个小小的磁盘管理器,可以显示各个文件夹所占空间大小

    本文将详细介绍我自己制作的一个小型磁盘管理器,它能帮助你快速定位那些占用大量存储空间的文件夹,并提供直观的图表分析,让磁盘清理变得轻松高效。 首先,这款磁盘管理器的核心功能是显示文件夹大小。它能够逐级...

    小小在线商场

    "MoveTest"可能是一个测试文件或者目录,用于测试商品移动、分类或排序的功能。在电商系统中,商品的动态管理和布局调整是常见操作,例如将商品从一个分类移到另一个,或者在页面上按特定顺序显示。这个测试文件可能...

    拓扑排序java语言

    拓扑排序是图论中的一个重要概念,主要用于有向无环图(DAG,Directed Acyclic Graph)。在计算机科学中,特别是在数据结构和算法领域,拓扑排序常常用于解决任务调度、依赖关系分析等问题。Java语言提供了强大的...

    Java排序算法汇总大全.doc

    在Java中实现这些排序算法时,可以创建一个通用的排序测试类,如SortTest,包含数组初始化、打印和交换元素等辅助方法。例如,冒泡排序方法会根据排序类型(升序或降序)进行相应的比较和交换操作。 总之,理解各种...

    查找二叉排序树的双亲节点,并输出路径project

    在C++中,我们可以定义一个二叉树节点类,包含节点值、左孩子和右孩子指针。然后,创建一个函数,接受树的根节点和目标节点,通过递归或迭代的方式查找目标节点的双亲。在此过程中,可以维护一个路径列表,记录从根...

    排序算法复习大全(Java实现).doc

    在Java代码中,我们定义了一个`InsertSorter`类继承自抽象类`Sorter`,并在`sort`方法中实现了插入排序的具体逻辑。插入排序的时间复杂度在最坏情况下为O(n^2),但在处理部分有序的数据时,效率可以接近线性时间O(n)...

    JAVA排序汇总.txt

    - **直接插入排序**:适用于小规模数据集,其基本思想是将一个记录插入到已排序好的有序表中,从而得到一个新的、记录增1的有序表。 - **折半插入排序**:在直接插入排序的基础上,通过二分查找来减少比较次数,...

    一年级数学下册 小小图书馆五课件 北师大版

    在“一年级数学下册 小小图书馆五课件 北师大版”中,主要涉及了以下几个关键知识点: 1. **两位数加一位数的进位加法**:在这个课件中,孩子们学习如何计算像28 + 4、28 + 9这样的题目。这些加法涉及到进位的概念...

    C#开发的小小的案例

    "C#开发的小小的案例"就是一个这样的资源,旨在为初学者和有经验的开发者提供实践和学习的平台。这个压缩包可能包含了多个示例项目,每个都展示了C#语言的不同应用场景和特性。 首先,我们要理解C#的基础知识。C#是...

    小小电话本

    7. **Swing组件的定制**:Swing允许自定义组件,比如你可以创建一个自定义的JTable来展示联系人列表,包括姓名和电话两列,并实现表格的排序和过滤功能。 8. **国际化支持**:如果你的应用需要支持多语言,Swing...

    一个用ASP+ACCESS写的小小的博客系统

    本文将深入探讨如何利用ASP技术和ACCESS数据库创建一个简单的博客系统。 一、ASP基础 ASP是一种服务器端的脚本语言,它允许开发者在HTML代码中嵌入VBScript或JScript代码,通过服务器端处理这些代码,生成动态网页...

    面试笔试必用-必须掌握Java排序算法.docx

    Java 排序算法是 Java 编程语言中的一种常用算法,用于对数组或列表进行排序。排序算法的选择取决于数据的规模、类型和已有的顺序。 分类 Java 排序算法可以分为五类:插入排序、交换排序、选择排序、归并排序和...

    一道面试题的代码:数组合并和排序

    本题目的核心是实现一个功能,将两个已有的数组合并为一个,然后对合并后的数组进行排序。这个问题通常出现在面试中,以评估应聘者的算法理解、逻辑思维以及对Java编程语言的掌握程度。下面我们将详细探讨这个问题...

    java8 stream 操作map根据key或者value排序的实现

    如果我们想根据 Map 的 Key 排序,只需要将上面的工具类进行小小的修改: ```java public , V &gt; Map, V&gt; sortByKey(Map, V&gt; map) { Map, V&gt; result = new LinkedHashMap(); map.entrySet().stream() .sorted(Map...

Global site tag (gtag.js) - Google Analytics