实现Comparable接口,并实现该接口下的compareTo()方法, 再使用Collections.sort()重新排序,就可以得到自己想要的顺序。
public class UserInfo implements Comparable<UserInfo> {
private String userName;
private int userAge;
public UserInfo(String userName, int userAge) {
this.userName = userName;
this.userAge = userAge;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
@Override
public int compareTo(UserInfo o) {
return this.userAge - o.getUserAge();
}
}
public static void main(String[] args) {
UserInfo user2 = new UserInfo("22", 22);
UserInfo user1 = new UserInfo("20", 20);
UserInfo user3 = new UserInfo("24", 24);
ArrayList<UserInfo> userList = new ArrayList<UserInfo>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
Collections.sort(userList);
for (UserInfo userInfo : userList) {
System.out.println(userInfo.getUserName());
}
}
java.util.Collections是一个包装类,它包含各种集合相关的操作的静态多态方法,次类不能实例化,
它就相当于一个工具类。
需要注意的是,java.util.Collection是一个集合的接口,虽然两个只是相差一个s,但是功能完全不一样。
在Collections的sort()方法中,如果用户实现了Comparable接口,该工具类将直接调用重写的compareTo方法。Collections中的sort()方法的实现是: public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator<T> i = list.listIterator();
for (int j = 0; j < a.length; j++) {
i.next();
i.set((T) a[j]);
}
}