项目中经常有对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; } }
相关推荐
在单字段排序中,我们通常使用Lambda表达式来指定排序依据: ```csharp List<Person> people = ...; // 假设这是一个包含Person对象的列表 people = people.OrderBy(p => p.Age).ToList(); // 按照年龄升序排序 ```...
这就涉及到了多字段排序。 多字段排序是指按照一个以上的属性或字段对数据进行排序。例如,你可能有一个包含员工信息的列表,你可能首先希望按员工的部门进行排序,然后在同一部门内按工资排序。这种排序方式可以...
List对象去重和按照某个字段排序的实现方法 在Java开发中,List对象的去重和排序是非常常见的操作。今天,我们将探讨如何对List对象进行去重和按照某个字段排序的实现方法。 首先,让我们来看一下List对象的去重。...
Java 中 List 排序是指在数据库中查出来的列表中对不同的字段重新排序。一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的 List 中排序,无疑会提高系统的性能。这样...
### List 数据字段排序不关注数据库,直接排序 在 Java 开发过程中,经常需要对 List 集合中的数据进行排序处理。本篇文章介绍一种方法,该方法能够在内存中直接对 List 对象的数据字段进行排序,而无需直接操作...
`List<T>`类还提供了带有额外参数的`Sort`方法,可以指定排序的起始索引和元素个数。这对于只对列表的一部分进行排序的情况非常有用。 ```csharp students.Sort(1, 3, new StudentAgeComparer()); ``` 这里,`Sort...
Java 8 新特性将 List 中按指定属性排序过滤重复数据的方法 Java 8 新特性将 List 中按指定属性排序过滤重复数据的方法是 Java 8 中一个非常有用的功能,它可以帮助开发者快速地对 List 中的数据进行排序和过滤,以...
如果需要同时按照多个字段排序,可以在`compare()`方法中组合比较多个字段,例如先按照`userId`升序,再按照`age`降序: ```java Collections.sort(list, new Comparator() { @Override public int compare...
在Java编程中,有时我们需要对List集合中的对象根据它们的某个特定字段进行排序。这个过程可以通过实现Comparable接口或Comparator接口来实现。以下是一个详细的实例,展示了如何按照List中存储的对象的某个字段(在...
主要为LIST对象中的指定字段排序 首先比较年龄,如果年龄相同,则比较名字
如果需要按照特定规则(例如,先按月份排序,再按日期排序)排序,可以这样实现: ```java List<LocalDate> sortedDates = dates.stream() .sorted(Comparator.comparing(LocalDate::getMonth) .thenComparing...
在遇到中文字段排序问题时,我们不能简单地依赖pandas自带的`sort_values()`或`sort_index()`方法,因为它们可能无法按照我们期望的顺序(如年级的一年级到三年级)排列中文字段。为了解决这个问题,我们可以采取...
`orderBy`方法是MyBatisPlus中的基础排序功能,它允许我们根据指定的字段进行升序排序。例如,如果我们有一个User实体类,包含id、name、age等字段,我们可以这样使用: ```java List<User> users = userMapper....
- **参数**:该方法接受两个参数:一个是需要排序的`List`对象,另一个是可选的`Comparator`对象,用于指定排序规则。 - **示例**:在提供的代码片段中,使用了`Collections.sort()`方法对`list`进行排序: ```...
2. **排序**:在列表数据中,用户可能需要根据特定字段对数据进行排序。实现这一功能通常涉及在后台进行数据处理,或者在前端通过JavaScript实现。例如,可以使用`Array.prototype.sort()`方法对数据进行排序,根据...
本篇将详细介绍如何根据指定字段对`List`中的对象进行排序,以`Student`类为例,假设每个`Student`都有一个`grad`属性表示成绩。 首先,我们需要创建`Student`类,定义`grad`属性和getter/setter方法: ```java ...
1. 确定排序依据:选择需要排序的列,这可能是列表中的任何属性或字段。 2. 应用排序算法:使用内置的`Sort()`方法,传入自定义比较器或指定排序规则。比较器可以是一个委托或实现`IComparer<T>`接口的类,用于比较...
这里的`-t ' '`指定字段间的分隔符为空格,`-k1,1`表示按第一字段排序,`-k2n,2`则指定了按第二字段(数字)进行排序。 执行这个命令后,输出的排序结果将是: ```bash chr12 3045343 3045532 chr13 3008566 ...