1、问题:页面有个排序列表,有name和age,后台为一个Arraylist,怎么做排序好点?
2、User类,实现Comparable接口,重写里面的compareTo方法:
package com.baidu.test;
public class User implements Comparable<User> {
private String name;
private int age;
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
// 按名字排序,如果名字相同则按年龄排序
public int compareTo(User user) {
if (this.name.compareTo(user.getName()) > 0) {
return 1;
} else if (this.name.compareTo(user.getName()) < 0) {
return -1;
} else {
if (this.age > user.getAge()) {
return 1;
} else if (this.age < user.getAge()) {
return -1;
}
}
return 0;
}
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;
}
}
3、测试:
package com.baidu.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
User user1 = new User("a", 1);
User user2 = new User("a", 2);
User user3 = new User("b", 6);
User user4 = new User("c", 3);
User user5 = new User("a1", 5);
User user6 = new User("a4", 1);
User user7 = new User("d", 5);
List list = new ArrayList();
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
list.add(user5);
list.add(user6);
list.add(user7);
Collections.sort(list);
Iterator itr = list.iterator();
while(itr.hasNext()){
User user = (User) itr.next();
System.out.println(user.getName()+":"+user.getAge());
}
}
}
---------------------------------------------------------
a:1
a:2
a1:5
a4:1
b:6
c:3
d:5
---------------------------------------------------------