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 ---------------------------------------------------------