java 工具类sort_Java 通用排序工具类ListSortUtils
场景:Java 类 需 重新排序,有时升序、有时倒叙,有时是多字段排序
代码:
package GenericTest;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* [简述]:List通用排序工具类
* User: xyj
* Date: 2016/07/03
* Created with IntelliJ IDEA.
*/
public class ListSortUtils {
private static final String SORT_ASC = "asc";
private static final String SORT_DESC = "desc";
/**
* [简述]: 对List数组排序
* @param list 源数据 排序集合
* @param sort 升序 还是 降序,默认升序
* @return List
*/
public static List> sort(List> list,final String sort){
Collections.sort(list, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int ret = String.valueOf(o1).compareTo(String.valueOf(o2));;
if(null != sort && SORT_DESC.equalsIgnoreCase(sort)){
return -ret;
}else{
return ret;
}
}
});
return list;
}
/**
*[简述]: List 泛型 排序
* @param list 源数据 排序集合
* @param field 排序的数据字段名称
* @param sort 升序 还是 降序,默认升序
* @param 泛型T
* @return List
*/
public static List sort(List list,final String field,final String sort){
Collections.sort(list, new Comparator() {
@Override
public int compare(T o1, T o2) {
int ret = 0;
try {
Method method1 = o1.getClass().getDeclaredMethod(getMethodName(field),null);
Method method2 = o1.getClass().getDeclaredMethod(getMethodName(field), null);
ret = method1.invoke(o1).toString().compareTo( method2.invoke(o2).toString());
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
if(null != sort && SORT_DESC.equalsIgnoreCase(sort)){
return -ret;
}else{
return ret;
}
}
});
return list;
}
/**
*[简述]: List 泛型 排序
* @param list 源数据 排序集合
* @param fields 排序的数据字段名称
* @param sorts 升序 还是 降序
* @param 泛型T
* @return List
*/
public static List sort(List list,final String [] fields,final String [] sorts){
if(null != fields && fields.length > 0){
for(int index = 0;index < fields.length;index ++){
String sortRule = SORT_ASC;
if(null != sorts && sorts.length >= index && null != sorts[index]){
sortRule = sorts[index];
}
final String sort = sortRule;
final String field = fields[index];
Collections.sort(list, new Comparator() {
@Override
public int compare(T o1, T o2) {
int ret = 0;
try {
Method method1 = o1.getClass().getDeclaredMethod(getMethodName(field),null);
Method method2 = o1.getClass().getDeclaredMethod(getMethodName(field), null);
ret = method1.invoke(o1).toString().compareTo( method2.invoke(o2).toString());
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
if(null != sort && SORT_DESC.equalsIgnoreCase(sort)){
return -ret;
}else{
return ret;
}
}
});
}
}
return list;
}
private static String getMethodName(String str){
StringBuffer name = new StringBuffer();
name = name.append("get").append(firstLetterToCapture(str));
return name.toString();
}
private static String firstLetterToCapture(String name){
char[] arr = name.toCharArray();
arr[0] -= 32;
return String.valueOf(arr);
}
}
java 工具类sort_Java 通用排序工具类ListSortUtils相关推荐
- Java Generics示例教程 - 通用方法,类,接口
Java Generics示例教程 - 通用方法,类,接口 Java Genrics是Java 5中引入的最重要的功能之一.如果您一直在使用Java Collections 对于版本5或更高版本,我确 ...
- java rabbitmq 工具类_RabbitMq通用管理工具类
import java.io.IOException; import java.util.concurrent.TimeoutException; import com.rabbitmq.client ...
- java array 元素的位置_介绍java中的两种排序工具Arrays和Collections
java中的排序工具主要是有两个Arrays和Collections.我们一个一个来讲解. 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可.因为 ...
- java sqlite 工具类_Java 工具类 - JDBC通用操作基类 BaseDao
封装了增删改查功能 适用于MySQL.Oracle.SQLServer.DB2.Sybase.JTDS.PostgreSql.SQLite.Derby.H2.HSQLDB.ODBC 等等数据库,有需要 ...
- java list排序工具类_java 之 Collections集合工具类排序
数组有工具类Arrays,集合也有一个工具类Collections. sort方法: sort(List list):根据其元素natural ordering对制定的列表进行排序 sort(List ...
- Java拖拽排序工具类
package com.ciih.jwt.util.sort;import java.lang.reflect.Field; import java.util.Collections; import ...
- 实现一个通用的中英文排序工具
前言 利用Collator类可以轻松实现排序,但是我们可能有各种model都需要进行排序,这样就会有一个问题,如果单独为每个model写一段排序代码,代码重复量很大. 所以我打算写一个通用的工具,使用 ...
- 集合--Set集合--HashSet类、LinkedHashSet类、TreeSet类及其自然排序
Set集合 HashSet类 import java.util.HashSet;/*Set集合:元素唯一且元素无序(存储和取出顺序不一致)的集合HashSet类概述不保证 set 的迭代顺序特别是它不 ...
- JAVA 排序工具类
提供了以下排序: 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 桶排序 堆排序 package com.xingej.algorithm.sort;import java.util.Ar ...
最新文章
- spring 框架学习(一)
- java 同步包_Java并发程序设计(四)JDK并发包之同步控制
- 小程序实现长按删除图片
- Android 图片平铺实现方式
- MyFaces Tree2控件使用 -----From http://blog.163.com/net_wood/blog
- 基于linux实现DNS互联网的搭建
- linux 基础命令 1
- 基于Redis+Kafka的首页曝光过滤方案
- OpenVINO安装步骤
- 辐流式重力浓缩池计算_污泥浓缩池工作方式
- jQuery调用WebService详解
- extjs中什么时候用{},什么时候用[]
- multisim10元件库介绍
- 数学史思维导图_高中数学课堂教学中思维导图的制作运用
- Excel单元格设置选择项
- 图像超分之——寻找两张图差异的区域
- Heiro试用失败记
- 史上最全面、最详细的Cookie总结
- ArcGlobe三维开发之十八——纵断面图的绘制
- 1046. Shortest Distance
热门文章
- java集合清空_java 集合删除数据
- ehcache使用_Java 程序员如何使用 Shiro 框架
- .net 5 正式版_ASP.NET Core 3时代全新开启,DevExpress ASP.NET增强Data Grid
- java中.of,java中instanceof的用法
- MySQL 删除用户
- 删除a标签下面的横线
- CRITIC法之python
- 【youcans 的 OpenCV 例程200篇】125. 形态算法之提取连通分量
- 鸿蒙系统中的 JS 开发框架
- php 根据数量创建数组,php实现根据字符串生成对应数组的方法