class Student {
public String name;
public int id;
public char gender;
public Student(String name, int id, char gender){
this.name = name;
this.id = id;
this.gender = gender;
}
}
然后我有一个ArrayList, 添加了三个学生进去
public static void main(String[] args){
List list = new ArrayList();
list.add(new Student( "Tom ", "3423 ", 'M '));
list.add(new Student( "Tom ", "1291 ", 'M '));
list.add(new Student( "Marry ", "3421 "), 'F '));
//然后我想给list里面的学生排序,很简单,只一行代码就可以
Collections.sort(list, new MyComparator());
}
/* 我的排序规则是,先按名字牌,如果名字一样的,按照id来排,只要把这个逻辑实现在MyComprator里就可以*/
class MyComparator implements Comparator {
public int compare(Object o1, Object o2){
Student s1 = (Student)o1;
Student s2 = (Student)o2;
if (s1.name.compateTo(s2.name) != 0) //如果名字不一样
return s1.name.compareTo(s2.name);
else // 如果名字一样
return s1.id - s2.id;
}
// 这个method在这里没有用,所以没有具体实现
public boolean equals (Object o){return false;}
}
这样,Collections.sort()就会根据你自己定义的规则来排序了。它会调用compare函数来决定拿个大,拿个小。 如果返回负数,说明前者小,反之亦然。 这里,当一开始比较名字的时候,我使用了String的compareTo , 这样就不用自己再写String比较的算法了
分享到:
相关推荐
本篇文章将深入探讨如何在C#中使用`OrderBy`方法进行动态多字段排序。 首先,了解`OrderBy`的基本用法。`OrderBy`方法接收一个委托作为参数,这个委托定义了排序的规则。在单字段排序中,我们通常使用Lambda表达式...
List,List, Object>>,多字段组合排序。提供一个简易的思路,如果需要进行参考。
本篇将详细讲解如何在C#中使用`IList<T>`实现多字段排序。 首先,我们需要了解C#中的排序基础。在C#标准库中,`System.Linq`命名空间提供了强大的排序功能,包括`OrderBy()`和`ThenBy()`方法。这两个方法可以用于...
- **多字段排序**: 对于复杂的数据结构,可以根据多个字段进行排序。 - **数据清洗**: 在处理数据前,先进行排序以便更容易发现异常值或规律。 #### 总结 通过这种方式,我们可以在 Java 中轻松地对 List 集合中的...
Java 中 List 排序是指在数据库中查出来的列表中对不同的字段重新排序。一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的 List 中排序,无疑会提高系统的性能。这样...
List对象去重和按照某个字段排序的实现方法 在Java开发中,List对象的去重和排序是非常常见的操作。今天,我们将探讨如何对List对象进行去重和按照某个字段排序的实现方法。 首先,让我们来看一下List对象的去重。...
在Windows编程中,`List Control`(MFC中的`CListCtrl`类)允许程序员创建类似电子表格的界面,用于显示多列数据。本篇将深入探讨如何在VC++中实现具有排序功能的`List Control`。 标题中的“VC中排序功能的list ...
"Java集合某个字段按照中文拼音排序" Java集合某个字段按照中文拼音排序是Java开发中经常遇到的问题。对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用...
`Sort`方法有多个重载版本,其中最简单的一个是不带任何参数的版本`List<T>.Sort()`。 然而,在尝试使用`Sort()`方法对`List<Student>`进行排序时,会遇到问题。这是因为`Sort()`方法默认使用元素的自然顺序进行...
导入jar 包 调用 String[] arr1 = new String[1]; ... 参数1 排序的集合 参数2 排序的字段(与定义字段一致) 可多个 参数3 排序方式(asc desc) 暂时只支持String 和int的排序 可能有些BUG 敬请谅解
在JavaScript中实现点击表格(Table)表头进行字段排序是一种常见的功能需求,特别是在网页数据展示时,用户往往希望可以通过点击列头对数据进行升序或降序排列。本示例将详细讲解如何通过JavaScript实现这一功能。 ...
Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...
Android List(集合)中的对象以某一个字段排序案例 Android List(集合)中的对象以某一个字段排序案例是 Android 开发中非常重要的一部分。在实际开发中,我们经常需要对一个对象的集合按照某一个字段进行排序,例如...
之前写过关于排序的文章。这篇文章比之前写的思路更广一下。效率上也比较快。是一个升级版
如果需要同时按照多个字段排序,可以在`compare()`方法中组合比较多个字段,例如先按照`userId`升序,再按照`age`降序: ```java Collections.sort(list, new Comparator() { @Override public int compare...
通常可以创建一个自定义结构,比如`struct ItemData`,包含需要显示的各个字段,以及一个整型成员`nSortValue`,用于排序。 2. **CListCtrl对象**:在MFC中,通过继承`CListCtrl`类并创建其对象,你可以访问List...
在开发中,我们可能会遇到,我们会根据不同情况对一个List集合进行排序操作,为了方便List集合根据对象中的某一个属性进行排序,开发了此工具类:
例如,如果你希望按`name`字段排序,可以创建如下比较函数: ```cpp bool CompareItems(const MyListItem& item1, const MyListItem& item2) { return item1.name.CompareNoCase(item2.name) ; } ``` 3. **使用`...
在Windows编程领域,ListCtrl是MFC(Microsoft Foundation Classes)库中的一个重要控件,它用于显示多列数据,常用于创建列表视图。本篇将深入探讨如何实现ListCtrl点击标题进行排序的功能。 首先,我们需要了解...