最近在一个项目中遇到需要将一个list集合根据时间进行排序的情况,于是,写出了以下方法,为了便于展示方法,我们首先建一个实体类
package test;
import java.util.Date;
public class User {
private int userid;
private String username;
private Date BirthDatestr;
private int num;
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthDatestr() {
return BirthDatestr;
}
public void setBirthDatestr(Date birthDatestr) {
BirthDatestr = birthDatestr;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public UserInfo(int userid, String username, Date birthDatestr, int num) {
super();
this.userid = userid;
this.username = username;
BirthDatestr = birthDatestr;
this.num = num;
}
}
之后是排序方法
import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.lang.reflect.Method;
public class SortList<E>{
public void Sort(List<E> list, final String method, final String sort){
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
int ret = 0;
try{
Method m1 = ((E)a).getClass().getMethod(method, null);
Method m2 = ((E)b).getClass().getMethod(method, null);
if(sort != null && "desc".equals(sort))//倒序
ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());
else//正序
ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
}catch(NoSuchMethodException ne){
System.out.println(ne);
}catch(IllegalAccessException ie){
System.out.println(ie);
}catch(InvocationTargetException it){
System.out.println(it);
}
return ret;
}
});
}
}
接下来我们测试一下方法的正确性
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.haibo.manage.model.HistoryCount;
import net.sf.json.JSONArray;
public class WangTest {
public static void main(String[] args) throws ParseException {
List<UserInfo> list = new ArrayList<UserInfo>();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
list.add(new UserInfo(3,"b",formater.parse("1980-12-01"),11));
list.add(new UserInfo(1,"c",formater.parse("1980-10-01"),30));
list.add(new UserInfo(2,"a",formater.parse("1973-10-01"),11));
System.out.println("-------原来序列-------------------");
for(UserInfo user : list){
System.out.println(user.toString());
}
//调用排序通用类
SortList<UserInfo> sortList = new SortList<UserInfo>();
//按userId排序
sortList.Sort(list, "getUserid", "desc");
System.out.println("--------按userId倒序------------------");
for(UserInfo user : list){
System.out.println(user.getUserid());
}
//按username排序
sortList.Sort(list, "getUsername", null);
System.out.println("---------按username排序-----------------");
for(UserInfo user : list){
System.out.println(user.getUsername());
}
//按birthDate排序
sortList.Sort(list, "getBirthDatestr", null);
System.out.println("---------按birthDate排序-----------------");
for(UserInfo user : list){
System.out.println(user.getBirthDatestr());
}
}
}
分享到:
相关推荐
在编程领域,排序算法是计算机科学的基础之一,尤其是在Java这样的高级编程语言中。排序算法用于组织数据,使得数据按照特定顺序排列,这对于数据分析、数据库管理等应用至关重要。本篇文章将详细探讨Java中常见的八...
在IT领域,排序算法是计算机科学中的核心概念,特别是在数据结构和算法分析中。这里我们主要探讨的是五种不同的排序算法:插入排序、选择排序、快速排序、希尔排序以及冒泡排序,它们都有对应的链表实现。让我们逐一...
C#实现所有经典排序算法 本文将对C#实现的所有经典排序算法进行详细的讲解和分析,从选择排序、冒泡排序、快速排序等开始,讲解每种排序算法的原理、优缺点、实现代码和时间复杂度等方面。 一、选择排序 选择排序...
在计算机科学中,排序算法是数据结构领域的重要组成部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序(如升序或降序)排列。简单选择排序是一种基础且直观的排序算法,虽然效率较低,但对理解排序原理...
排序算法在 Java 中的应用 Java 中的排序算法是指对列表中的元素进行排序的方法。常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。每种排序算法都有其优缺点,选择合适的排序算法取...
这里我们将详细讨论四种常见的排序算法:冒泡排序、简单选择排序、归并排序和堆排序,以及它们在C#语言中的实现。 1. **冒泡排序**: 冒泡排序是一种简单的交换排序,它通过不断比较相邻元素并交换位置来逐步排序...
在C#中,可以使用内置的`Array.Sort()`或`List<T>.Sort()`方法,它们内部使用了高效的排序算法,如TimSort(一种混合了插入排序、归并排序和双路插入排序的稳定排序算法),但在需要自定义排序规则或者理解算法工作...
根据提供的信息,我们可以总结出以下关于八种基本排序算法中的两种——冒泡排序(Bubble Sort)与插入排序(Insert Sort)的知识点。 ### 冒泡排序(Bubble Sort) #### 定义 冒泡排序是一种简单的排序算法。它...
基数排序是一种非比较型整数排序算法,它的原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。这种算法对于大数据量的排序尤其有效,因为其时间复杂度为线性,即O(n*k),其中n是待排序的元素数量,k是每...
在`Collections.sort()`内部,使用了一种称为“快速排序”的高效排序算法。快速排序是一种分治策略,通过选择一个基准值,将数组分为两部分,左边的元素都小于基准,右边的元素都大于基准,然后再对左右两部分递归地...
根据给定文件中的标题、描述、标签以及部分内容,我们可以总结出以下关于几种排序算法的知识点,特别是关于希尔排序的相关细节。 ### 几种排序算法的代码实现 #### 1. **希尔排序** - **定义与原理**:希尔排序是...
根据提供的文件信息,我们可以深入探讨在C#中实现的不同类型的排序算法。这些排序算法包括选择排序、冒泡排序、快速排序、插入排序以及希尔排序。接下来将逐一介绍这些排序算法的具体实现及其工作原理。 ### 1. ...
### 八大排序算法整理 #### 一、冒泡排序(交换排序) **基本思想**: 冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地...
根据给定的信息,本文将详细解释C#语言中几种经典的排序算法实现,包括选择排序(Selection Sort)、冒泡排序(Bubble Sort)、快速排序(Quick Sort)、插入排序(Insertion Sort)以及希尔排序(Shell Sort)。...
在这个"python ip地址排序算法2.0"中,开发者显然已经对原始的排序算法进行了优化,旨在提高效率并支持更复杂的排序需求,比如按IP地址的分组进行排序。这个更新的算法利用了Python中的map函数、lambda表达式以及...
八大排序算法是计算机科学中对数据进行排序的八种经典算法,它们在计算机程序设计和算法分析中有着广泛应用。在Python中实现这些排序算法不仅能帮助我们理解排序原理,同时还能提升我们的编程能力。下面,我们一一...
"基于链表实现的排序算法以及性能分析" 本文主要围绕链表实现的排序算法展开讨论,涵盖了选择排序、插入排序、冒泡排序、快速排序和归并排序等多种常见排序算法,并对这些算法的性能进行了分析和对比。 选择排序 ...
在编程领域,排序算法是计算机科学中的核心概念,尤其是在C#这样的高级编程语言中。排序算法是用来组织数据,使其按照特定顺序排列的算法。本资料包"**c#+排序算法大全+经典算法**"显然是一个关于C#实现各种排序算法...
本次解析的是一个基于C语言实现的简单排序算法,主要关注于如何在列表视图(List View)中对项目进行排序,特别适用于Windows应用程序开发环境。 ### 排序算法简介 排序算法是用于将一组无序的数据按照特定的顺序...
在编程领域,排序算法是计算机科学中的核心概念,它们用于组织和优化数据处理。C#是一种广泛使用的面向对象的编程语言,它提供了多种方法来实现排序。本篇将深入探讨C#中的排序算法,以及如何在Visual Studio 2005...