如果List中Object实现了Comparator接口,便可以直接用以下的方式对List进行排序 如List list,通过list.add("abc")等操作为list添加了一些元素,通过以下代码即可完成排序: Collections.sort(list) 由于使用了默认的排序规则,所以sort只传
//一个POJO例子
public class User {
private int age;
private String name;
public User(String name,int age){
this.name=name;
this.age=age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//具体的比较类,实现Comparator接口
public class ComparatoUser implements Comparator {
public int compare(Object arg0, Object arg1) {
User user0=(User)arg0;
User user1=(User)arg1;
// 首先比较年龄,如果年龄相同,则比较名字
int flag=user0.getAge()-(user1.getAge());
if(flag==0){
return user0.getName().compareTo(user1.getName());
}else{
return flag;
}
}
}
//测试类
public class TestUser {
public static void main(String[] args){
List list=new ArrayList();
list.add(new User("aa",12));
list.add(new User("dd",888));
list.add(new User("ff",123));
list.add(new User("cc",123));
list.add(new User("bb",142));
list.add(new User("ww",126));
主要看看拿的那个对象
ComparatoUser com=new ComparatoUser();
Collections.sort(list, com);
for(int i=0;i
User u=(User)list.get(i);
System.out.print(u.getAge()+"/");
System.out.println(u.getName());
}
}
}
用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable{ private String name; private Integer order; public String getN
//&&&&&&&&&&&&&&&&&&&&& 上面和下面的方法实现功能是一样的,注意观察不同点
pojo
public class User implements Comparator {
private String name;
private int age;
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;
}
public int compare(User o1, User o2) {
if(o1.getAge()-(o2.getAge())!=0){
return o1.getAge()-(o2.getAge());
}else{
return o1.getName().compareTo(o2.getName());
}
}
}
测试类
public class Test {
public static void main(String[] args){
User u1=new User();
u1.setAge(13);
u1.setName("d");
User u2=new User();
u2.setAge(6);
u2.setName("h");
User u3=new User();
u3.setAge(3);
u3.setName("a");
User u4=new User();
u4.setAge(23);
u4.setName("c");
List al=new ArrayList();
al.add(u1);
al.add(u2);
al.add(u3);
al.add(u4);
//主要观察里面的对象new User();和上面的实现有什么不同
Collections.sort(al,new User());
Iterator ite=al.iterator();
while(ite.hasNext()){
User user=(User)ite.next();
System.out.print(user.getAge()+"/");
System.out.println(user.getName());
}
}
}