转:http://www.blogjava.net/landor2004/articles/sort.html
用Collections.sort方法对list排序有两种方法
第一种是list中的对象实现Comparable接口,如下:
/**
* 根据order对User排序
*/
public class User implements Comparable<User>{
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}
}
* 根据order对User排序
*/
public class User implements Comparable<User>{
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}
}
测试一下:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
//此处add user2再add user1
list.add(user2);
list.add(user1);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
}
}
}
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
//此处add user2再add user1
list.add(user2);
list.add(user1);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
第二种方法是根据Collections.sort重载方法来实现,例如:
/**
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
主类中这样写即可:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
list.add(user2);
list.add(user1);
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});
for(User u : list){
System.out.println(u.getName());
}
}
}
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
list.add(user2);
list.add(user1);
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
择优用之。
相关推荐
当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...
本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现Comparable接口。Comparable接口定义了一个自然排序的规则,使得实现了该接口的类的对象可以进行比较并排序。...
Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...
1. **自然排序**:如果 `List` 中的元素是实现了 `Comparable` 接口的对象,那么可以使用 `Collections.sort()` 方法进行自然排序。`Comparable` 接口定义了一个 `compareTo()` 方法,该方法用于比较对象之间的大小...
`Collections.sort()`有两种主要的排序方式:一种是基于元素的自然顺序,另一种是通过自定义比较器`Comparator`。 首先,我们来详细讲解`Collections.sort()`的默认排序机制。当传入的列表元素实现了`Comparable`...
该方法有两种参数形式,分别是对基本类型和自定义类的排序。在本文中,我们将通过示例代码来详细介绍这两种用法。 基本类型的排序 Collections.sort 方法的第一个参数形式是 public static ...
在Java编程中,Collections工具类提供了许多方便的集合操作,其中`sort()`方法是一个非常重要的功能,用于对List类型的集合进行排序。本文将详细介绍`Collections.sort()`方法的两种使用方式及其示例。 ### 一、...
`Sort`方法有多个重载版本,其中最简单的一个是不带任何参数的版本`List<T>.Sort()`。 然而,在尝试使用`Sort()`方法对`List<Student>`进行排序时,会遇到问题。这是因为`Sort()`方法默认使用元素的自然顺序进行...
在这个场景下,我们使用`Collections.sort()`函数对一个包含Map对象的List进行排序,然后将排序后的数据适配到ListView中。以下是关于这个主题的详细解释。 **一、Map与List的关系** 在Java中,Map是一种键值对的...
在C#编程语言中,`Sort`方法是一个非常重要的功能,它被广泛应用于对各种数据结构,如数组、列表等进行排序。这个方法是通过.NET框架中的`System.Collections.Generic`命名空间下的`List<T>`类提供的,同时也存在于`...
本文将详细介绍如何使用Java对字符串数组按照单词的首字母进行排序的两种方法,并通过代码示例加以说明,帮助读者深入理解并掌握这些技巧。 ### 方法一:使用`Arrays.sort()`方法 在Java中,`java.util.Arrays`类...
在 Java 中,对 List 排序可以使用 Collections.sort(list) 方法,但是这种方法只能对基本类型的 List 进行排序,如果 List 中包含的是对象,那么这种方法就不行了。这时需要使用Comparator接口来实现排序。 ...
对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用Comparable接口来实现自定义排序。例如,我们可以创建一个Record类,...
本篇文章将详细介绍如何实现`JTable`表头的排序功能,并提供两种不同的实现方法。 ### 方法一:使用DefaultTableColumnModel的Comparator `DefaultTableColumnModel`是`JTable`默认使用的列模型,它支持列的排序...
Java中的`Collections.sort()`方法是最常用的排序工具,它可以对List接口的实现类进行原地排序。例如,我们可以对ArrayList或LinkedList调用此方法,排序会按照元素的自然顺序或者自定义比较器进行。 ```java List...
在上述代码中,使用了 List 接口来存储 ServerInfo 对象列表,并使用了 Collections.sort() 方法来对列表进行排序。List 接口提供了对元素的添加、删除和遍历等操作,可以满足基本的数据存储需求。 在实际应用中,...
有两种主要方法可以对HashMap进行排序: - **使用LinkedHashMap** LinkedHashMap是HashMap的一个子类,它维护了元素的插入顺序或者访问顺序。如果想要按照插入顺序排序,直接使用LinkedHashMap即可。如果需要按照...
// 对List排序 List<Integer> list = Arrays.asList(5, 3, 8, 1, 9); Collections.sort(list); System.out.println(list); // 使用Comparator自定义排序规则 List<Person> people = Arrays.asList( new ...
这里可以使用`Collections.sort()`方法对Map的键值对进行排序。`Collections.sort()`需要一个List参数,所以我们需要先将Map的键转换成List,然后提供一个Comparator来比较两个时间戳的先后顺序。 Comparator的实现...
可以使用Java的Collections.sort方法来排序List对象列表。 ```java List<Student> list = new ArrayList(); // 添加元素到list Collections.sort(list, new Comparator() { @Override public int compare(Student...