`
zhangjim
  • 浏览: 52819 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

List按指定字段排序

 
阅读更多

项目中经常有对List按某个字段进行排序,这里写了个通用的方法,仅供参考:

public class SortList<T> {
	/**
	 * @param targetList 目标排序List
	 * @param sortField 排序字段
	 * @param sortMode 排序方式
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void sort(List<T> targetList, final String sortField, final String sortMode) {
		Collections.sort(targetList, new Comparator() {
			public int compare(Object obj1, Object obj2) { 
				int retVal = 0;
				try {
					Method method1 = ((T)obj1).getClass().getMethod(sortField, null);
					Method method2 = ((T)obj2).getClass().getMethod(sortField, null);
					if (sortMode != null && "desc".equals(sortMode)) {
						retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString()); // 倒序
					} else {
						retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString()); // 正序
					}
				} catch (Exception e) {
					throw new RuntimeException();
				}
				return retVal;
			}
		});
	}
	
	/**
	 * 测试方法
	 * @param args
	 */
	public static void main(String[] args) {
		List<Person> targetList = new ArrayList<Person>();
		targetList.add(new Person("zhangsan",11));
		targetList.add(new Person("lisi",12));
		targetList.add(new Person("wangwu",13));
		System.out.println("排序前: " + targetList);
		
		SortList<Person> sortList = new SortList<Person>();
		sortList.sort(targetList, "getAge", "desc");
		
		System.out.println("排序后:" +targetList);
	}
}

class Person {
	private String name;
	private int age;

	public Person() {

	}

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public String toString(){
		return "name: " + this.name + ",age: " + this.age;
	}
}

 

0
0
分享到:
评论

相关推荐

    C# List OrderBy 动态多字段排序

    在单字段排序中,我们通常使用Lambda表达式来指定排序依据: ```csharp List&lt;Person&gt; people = ...; // 假设这是一个包含Person对象的列表 people = people.OrderBy(p =&gt; p.Age).ToList(); // 按照年龄升序排序 ```...

    C# IList多字段排序

    这就涉及到了多字段排序。 多字段排序是指按照一个以上的属性或字段对数据进行排序。例如,你可能有一个包含员工信息的列表,你可能首先希望按员工的部门进行排序,然后在同一部门内按工资排序。这种排序方式可以...

    List对象去重和按照某个字段排序的实现方法

    List对象去重和按照某个字段排序的实现方法 在Java开发中,List对象的去重和排序是非常常见的操作。今天,我们将探讨如何对List对象进行去重和按照某个字段排序的实现方法。 首先,让我们来看一下List对象的去重。...

    java中list排序

    Java 中 List 排序是指在数据库中查出来的列表中对不同的字段重新排序。一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的 List 中排序,无疑会提高系统的性能。这样...

    List数据字段排序不关注数据库,直接排序

    ### List 数据字段排序不关注数据库,直接排序 在 Java 开发过程中,经常需要对 List 集合中的数据进行排序处理。本篇文章介绍一种方法,该方法能够在内存中直接对 List 对象的数据字段进行排序,而无需直接操作...

    c# List类排序方法

    `List&lt;T&gt;`类还提供了带有额外参数的`Sort`方法,可以指定排序的起始索引和元素个数。这对于只对列表的一部分进行排序的情况非常有用。 ```csharp students.Sort(1, 3, new StudentAgeComparer()); ``` 这里,`Sort...

    java8新特性将List中按指定属性排序过滤重复数据的方法

    Java 8 新特性将 List 中按指定属性排序过滤重复数据的方法 Java 8 新特性将 List 中按指定属性排序过滤重复数据的方法是 Java 8 中一个非常有用的功能,它可以帮助开发者快速地对 List 中的数据进行排序和过滤,以...

    List对象排序通用方法

    如果需要同时按照多个字段排序,可以在`compare()`方法中组合比较多个字段,例如先按照`userId`升序,再按照`age`降序: ```java Collections.sort(list, new Comparator() { @Override public int compare...

    Java按照List内存储的对象的某个字段进行排序的实例

    在Java编程中,有时我们需要对List集合中的对象根据它们的某个特定字段进行排序。这个过程可以通过实现Comparable接口或Comparator接口来实现。以下是一个详细的实例,展示了如何按照List中存储的对象的某个字段(在...

    JAVA LIST排序

    主要为LIST对象中的指定字段排序 首先比较年龄,如果年龄相同,则比较名字

    java使用stream对日期排序

    如果需要按照特定规则(例如,先按月份排序,再按日期排序)排序,可以这样实现: ```java List&lt;LocalDate&gt; sortedDates = dates.stream() .sorted(Comparator.comparing(LocalDate::getMonth) .thenComparing...

    pandas 透视表中文字段排序方法

    在遇到中文字段排序问题时,我们不能简单地依赖pandas自带的`sort_values()`或`sort_index()`方法,因为它们可能无法按照我们期望的顺序(如年级的一年级到三年级)排列中文字段。为了解决这个问题,我们可以采取...

    MyBatisPlus条件构造器带条件排序方法orderBy、orderByDesc、orderByAsc使用示例代码

    `orderBy`方法是MyBatisPlus中的基础排序功能,它允许我们根据指定的字段进行升序排序。例如,如果我们有一个User实体类,包含id、name、age等字段,我们可以这样使用: ```java List&lt;User&gt; users = userMapper....

    java中进行集合排序

    - **参数**:该方法接受两个参数:一个是需要排序的`List`对象,另一个是可选的`Comparator`对象,用于指定排序规则。 - **示例**:在提供的代码片段中,使用了`Collections.sort()`方法对`list`进行排序: ```...

    分页控件和List绑定排序

    2. **排序**:在列表数据中,用户可能需要根据特定字段对数据进行排序。实现这一功能通常涉及在后台进行数据处理,或者在前端通过JavaScript实现。例如,可以使用`Array.prototype.sort()`方法对数据进行排序,根据...

    java List排序demo

    本篇将详细介绍如何根据指定字段对`List`中的对象进行排序,以`Student`类为例,假设每个`Student`都有一个`grad`属性表示成绩。 首先,我们需要创建`Student`类,定义`grad`属性和getter/setter方法: ```java ...

    list列排序和调用sql存储过程

    1. 确定排序依据:选择需要排序的列,这可能是列表中的任何属性或字段。 2. 应用排序算法:使用内置的`Sort()`方法,传入自定义比较器或指定排序规则。比较器可以是一个委托或实现`IComparer&lt;T&gt;`接口的类,用于比较...

    linux sort多字段排序实例解析

    这里的`-t ' '`指定字段间的分隔符为空格,`-k1,1`表示按第一字段排序,`-k2n,2`则指定了按第二字段(数字)进行排序。 执行这个命令后,输出的排序结果将是: ```bash chr12 3045343 3045532 chr13 3008566 ...

Global site tag (gtag.js) - Google Analytics