Comparable

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

猜你喜欢

转载自luan.iteye.com/blog/1868414