用collections.sort方法对list排序有两种方法
第一种是list中的对象实现comparable接口,如下:
[java] view plain copy
/**
* 根据order对user排序
*/
public class user implements comparable<user>{
private string name;
private integer order;
public string getname() {
return name;
}
public void setname(string name) {
this.name = name;
}
public integer getorder() {
return order;
}
public void setorder(integer order) {
this.order = order;
}
public int compareto(user arg0) {
return this.getorder().compareto(arg0.getorder());
}
} 测试一下:
public class test{
public static void main(string[] args) {
user user1 = new user();
user1.setname(a);
user1.setorder(1);
user user2 = new user();
user2.setname(b);
user2.setorder(2);
list<user> list = new arraylist<user>();
//此处add user2再add user1
list.add(user2);
list.add(user1);
collections.sort(list);
for(user u : list){
system.out.println(u.getname());
}
}
}
输出结果如下
a
b
第二种方法是根据collections.sort重载方法来实现,例如:
[java] view plain copy
/**
* 根据order对user排序
*/
public class user { //此处无需实现comparable接口
private string name;
private integer order;
public string getname() {
return name;
}
public void setname(string name) {
this.name = name;
}
public integer getorder() {
return order;
}
public void setorder(integer order) {
this.order = order;
}
}
主类中这样写即可(hastset——>list——>sort进行排序):
public class test {
public static void main(string[] args) {
user user1 = new user();
user1.setname(a);
user1.setprice(11);
user user2 = new user();
user2.setname(b);
user2.setprice(2);
set<user> hset = new hashset<user>();
hset.add(user2);
hset.add(user1);
list<user> list = new arraylist<user>();
list.addall(hset);
collections.sort(list,new comparator<user>(){
public int compare(user arg0, user arg1) {
return arg0.getprice().compareto(arg1.getprice());
}
});
for(user u : list){
system.out.println(u.getname());
}
}
输出结果如下:
a
b
默认为升序,将。return arg0.getorder().compareto(arg1.getorder()); 改为:
return arg1.getorder().compareto(arg0.getorder());
就成降序的了。