今天的任务不多,练习一下list排序。
1)方法一:要排序的对象必须实现Comparable接口;
//user对象
public class User implements Comparable<User> {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int compareTo(User arg0) {
int result = this.getSex().compareTo(arg0.getSex());//先按照性别排序
if (result == 0) {//如果性别相同,再按照名字排序
return this.getName().compareTo(arg0.getName());
} else {
return result;
}
}
}
测试:
public class Test {
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
User user1 = new User();
user1.setName("abc");
user1.setSex("male");
User user2 = new User();
user2.setName("adg");
user2.setSex("male");
User user3 = new User();
user3.setName("holly");
user3.setSex("female");
list.add(user1);
list.add(user3);
list.add(user2);
Collections.sort(list);
for (User u : list) {
System.out.println(u.getSex() + ":" + u.getName());
}
}
}
2)方法二:不用实现Comparable接口;
public class User2 {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
测试:
public class Test2 {
public static void main(String[] args) {
List<User2> list = new ArrayList<User2>();
User2 user1 = new User2();
user1.setName("a");
user1.setSex("male");
User2 user2 = new User2();
user2.setName("c");
user2.setSex("male");
User2 user3 = new User2();
user3.setName("b");
user3.setSex("female");
list.add(user1);
list.add(user3);
list.add(user2);
Collections.sort(list, new Comparator<User2>() {
public int compare(User2 u1, User2 u2) {
int result = u1.getSex().compareTo(u2.getSex());
if (result == 0) {
return u1.getName().compareTo(u2.getName());
} else {
return result;
}
}
});
for (User2 u : list) {
System.out.println(u.getSex() + ":" + u.getName());
}
}
}