算法:
1. 对象实现Comparable接口,并从写compareTo()方法,方法里是排序规则。
2. 利用Arrays.sort(o)进行排序,不要要注意需要List.toArray();
1. 对象实现Comparable接口,并从写compareTo()方法,方法里是排序规则。
2. 利用Arrays.sort(o)进行排序,不要要注意需要List.toArray();
3. 获得排序后的List。
import java.util.Date;
/**
* 需要排序的bean对象。
*
* @author zaki
*
*/
public class ComparableBean implements Comparable<ComparableBean> {
private int id;
private String name;
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
/*
* 按照id从小到大的顺序排序。 自己可以在方法里面编写任意的排序算法。
*/
public int compareTo(ComparableBean o) {
// 根据名字从小到大顺序:if(String.CASE_INSENSITIVE_ORDER.compare(getName(), o.getName()) > 0)
// 根据生日从小到大顺序:if (this.birthday.compareTo(o.getBirthday()) > 0)
// 根据ID从小到大顺序。
if(this.getId() > o.getId()){
return 1;
}else {
return -1;
}
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return getId() + " : " + getName() + " : " + getBirthday().toString();
}
}
排序和测试类:
Java代码 收藏代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Random;
public class TestComparable {
private TestComparable() {
ComparableBean cbean;
Random rand = new Random();
List<ComparableBean> beans = new ArrayList<ComparableBean>();
for (int i = 0; i < 100; i++) {
cbean = new ComparableBean();
cbean.setId(rand.nextInt(10000));
cbean.setBirthday(new Date());
cbean.setName("TestName" + rand.nextInt(1000));
beans.add(cbean);
}
Object[] beanObjects = beans.toArray();
Arrays.sort(beanObjects);
beans.removeAll(beans);
System.out.println(beans.size());
for (int i = 0; i < 100; i++) {
System.out.println(beanObjects[i]);
}
System.out.println("ok");
}
public static void main(String[] args) {
new TestComparable();
}
}