一、List排序
1、基础类型的List排序
/**
* 对简单的List排序
*
* 简单常量组成的List,可以直接使用Collections.sort排序
*/
@Test
public void listSort() {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(0);
list.add(4);
list.add(2);
list.add(9);
Collections.sort(list);
System.out.println(list);
}
输出:[0, 1, 2, 4, 9]
对简单类型的List排序,只需要调用sort方法即可,List将按照字典顺序排序。
2、对复杂类型的List排序(实现Comparator接口)
①实现Comparator排序
public class User{
private int id;
private String username;
private String password;
public User(int id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
使用Comparator对User对象的List排序:
/**
* 对复杂的对象排序
*/
@Test
public void listSort2() {
List<User> list = new ArrayList<User>();
User user1 = new User(1,"哈哈","haha");
User user2 = new User(5,"呵呵","hehe");
User user3 = new User(2,"嘻嘻","xixi");
User user4 = new User(9,"嘿嘿","heihei");
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if(o1.getId() > o2.getId()) {
return 1;
}else if(o1.getId() == o2.getId()) {
return 0;
}else {
return -1;
}
}
});
System.out.println(list);
}
或者:
/**
* 创建Comparator来实现排序
*/
@Test
public void listSort3() {
Comparator<User> com = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if(o1.getId() > o2.getId()) {
return 1;
}else if(o1.getId() < o2.getId()) {
return -1;
}else {
return 0;
}
}
};
List<User> list = new ArrayList<User>();
User user1 = new User(1,"哈哈","haha");
User user2 = new User(5,"呵呵","hehe");
User user3 = new User(2,"嘻嘻","xixi");
User user4 = new User(9,"嘿嘿","heihei");
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
list.sort(com);
System.out.println(list);
}
3、对复杂类型的List排序(实现Comparable接口)
public class User implements Comparable<User>{
private int id;
private String username;
private String password;
public User(int id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
@Override
public int compareTo(User o) {
if(this.getId() > o.getId()) {
return 1;
}else if(this.getId() < o.getId()) {
return -1;
}else {
return 0;
}
}
}
/**
* User实现 Comparable 接口
*/
@Test
public void listSort4() {
List<User> list = new ArrayList<User>();
User user1 = new User(1,"哈哈","haha");
User user2 = new User(5,"呵呵","hehe");
User user3 = new User(2,"嘻嘻","xixi");
User user4 = new User(9,"嘿嘿","heihei");
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
Collections.sort(list);
System.out.println(list);
}