# List<T> 排序

1、重载Collections.sort方法

package com.fang.dbtest;

public class User {
private Integer id;
private String name;
private Integer age;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

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

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

}


package com.fang.dbtest;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

public class Tests {
public static void main(String[] arg) {
List<User> list = new ArrayList<User>();
User user1 = new User();
User user2 = new User();
User user3 = new User();
user1.setId(1);
user1.setName("name1");
user1.setAge(3);
user2.setId(2);
user2.setName("name2");
user2.setAge(2);
user3.setId(3);
user3.setName("name3");
user3.setAge(1);
// 按照指定的属性升序排序
Collections.sort(list, new Comparator<User>() {
public int compare(User arg0, User arg1) {
return arg0.getAge().compareTo(arg1.getAge());
}
});
for (Iterator<User> it = list.iterator(); it.hasNext();) {
User user = it.next();
System.out.println(user.getName());
}
}

}


name3
name2
name1

2、就是list泛型中的对象实现Comparable接口：

package com.fang.dbtest;

public class User implements Comparable<User> {
private Integer id;
private String name;
private Integer age;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

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

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
<pre name="code" class="java">        // 按照id 进行排序
@Override
public int compareTo(User o) {
// TODO Auto-generated method stub
return this.getId().compareTo(o.getId());
}

}


package com.fang.dbtest;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Tests {
public static void main(String[] arg) {
List<User> list = new ArrayList<User>();
User user1 = new User();
User user2 = new User();
User user3 = new User();
user1.setId(1);
user1.setName("name1");
user1.setAge(3);
user2.setId(2);
user2.setName("name2");
user2.setAge(2);
user3.setId(3);
user3.setName("name3");
user3.setAge(1);
// 按照指定的属性升序排序
Collections.sort(list);
// 反转指定列表中元素的顺序。
Collections.reverse(list);
Iterator<User> it = list.iterator();
while (it.hasNext()) {
User user = it.next();
System.out.println(user.getName());
}
}

}


name3
name2
name1

• 本文已收录于以下专栏：

## 聊聊学习List<T>搜索与排序的心得

• feipeng8848
• 2016年02月26日 10:02
• 495

## List<T> 根据某个字段排序

List list = new ArrayList(); //...... Collections.sort...
• zhixun2012
• 2014年01月18日 14:10
• 2802

## 建议采用的顺序是 List<T>、List<?>、List<Object>

List、List、1^这三者都可以容纳所有的对象，但使用的顺序应该是首选List,次之List,最后选择List,原因如下： (1) List是确定的某一个类型 List表示的是List集合中的元素...
• lexang1
• 2015年11月02日 22:15
• 1050

## 关于Comparable<T>解决List<bean>，依据bean的某个属性对list进行排序

• Mr_Hou2016
• 2017年05月12日 16:22
• 567

## Android List<T> 排序

1.T排序 List groupBeans ; Collections.sort(groupBeans,new Comparator(){             public in...
• rrrgy236116
• 2017年06月19日 12:19
• 97

## Collections.sort对List排序的两种方法

• wxx614817
• 2016年02月03日 12:23
• 9156

## List<T>采用delegate快速实现排序、查找等操作

List采用delegate快速实现排序、查找等操作       .NET中的List非常方便，但是很遗憾得是没有自带更方便的一些排序、查找函数。比如说，Sort()和Find()方法都包含在Lis...
• liehuo123
• 2014年05月20日 18:07
• 4501

## List集合排序Sort(Comparison<T> comparison)

List< T > 集合对复杂类型的排序Sort()有4个重载 1.T类型实现了IComparable< T >接口 2.另写一个类，该类实现了IComparer< T > 3.Sort(Com...
• qwt19900802
• 2016年01月26日 00:09
• 365

## 对ArrayList<T>中按照T的某个属性进行排序

• an13531829360
• 2016年10月22日 11:42
• 1043

## List<T>泛型集合根据对象的某一属性排序

Object t; List list2 = new ArrayList(); Object[] objs = list2.toArray(); for(int...
• zhengsaisai
• 2017年11月17日 15:39
• 119

举报原因： 您举报文章：List 排序 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)