首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java List 排序 Collections.sort() 对 List 排序(第一年龄排序,如果年龄相同,则按名字排序)

2012-10-27 
java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序)//一个POJO例

java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序)

//一个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<list.size();i++){
???User u=(User)list.get(i);
???System.out.print(u.getAge()+"/");
???System.out.println(u.getName());
??}
?}

}

?

?

?

?

?

?

//&&&&&&&&&&&&&&&&&&&&&???? ?上面和下面的方法实现功能是一样的,注意观察不同点?

?

?

?

pojo

?

public class User implements Comparator<User> {
?
??? 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<User> al=new ArrayList<User>();
?? 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());
?? }
? }
?}

?

?

?

另一篇博客总结在线

热点排行