返回顶部

收藏

使用Collections.sort()方法对list排序

更多

一个POJO例子

class User {
 String name;
 String age;

 public User(String name,String age){
  this.name=name;
  this.age=age;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 } 
}

具体的比较类,实现Comparator接口

import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class ComparatorUser implements Comparator{

 public int compare(Object arg0, Object arg1) {
  User user0=(User)arg0;
  User user1=(User)arg1;

   //首先比较年龄,如果年龄相同,则比较名字

  int flag=user0.getAge().compareTo(user1.getAge());
  if(flag==0){
   return user0.getName().compareTo(user1.getName());
  }else{
   return flag;
  }  
 }

}

测试类

public class SortTest {

 public static void main(String[] args){
  List userlist=new ArrayList();
  userlist.add(new User("dd","4"));
  userlist.add(new User("aa","1"));
  userlist.add(new User("ee","5"));
  userlist.add(new User("bb","2"));  
  userlist.add(new User("ff","5"));
  userlist.add(new User("cc","3"));
  userlist.add(new User("gg","6"));

  ComparatorUser comparator=new ComparatorUser();
  Collections.sort(userlist, comparator);

  for (int i=0;i<userlist.size();i++){
   User user_temp=(User)userlist.get(i);
      System.out.println(user_temp.getAge()+","+user_temp.getName()); 
  }

 }
}

也可以不定义Comparator类,直接将此类的实现inline,如下代码:

Collections.sort(myList, new Comparator<User>() { 
        public int compare(User user0, User user1) { 
            int flag=user0.getAge().compareTo(user1.getAge());
            if(flag==0){
                return user0.getName().compareTo(user1.getName());
            }else{
                return flag;
            }  
        } 
    });

首先年龄排序,如果年龄相同,则按名字排序

结果:

   1, aa
   2, bb
   3, cc
   4, dd
   5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
   5, ff
   6, gg

标签:java,基础

收藏

0人收藏

支持

1

反对

0

相关聚客文章
  1. 郑 旭东 发表 2014-01-16 16:46:51 JAVA多线程和并发基础面试问答
  2. Terry Zhang 发表 2014-04-17 15:27:06 [正则] 字符类型
  3. Terry Zhang 发表 2014-04-27 10:43:29 [集合框架] 接口
  4. 逍遥冲 发表 2013-12-05 05:53:28 [引]Java NIO —- IO复用
  5. 糖果 发表 2015-08-03 21:33:22 逆向基础(十三) JAVA (四)
  6. Terry Zhang 发表 2014-04-18 05:08:52 [NIO.2] 编写一个文件拷贝应用
  7. Terry Zhang 发表 2014-04-24 08:14:18 [正则] 边界匹配器
  8. Terry Zhang 发表 2014-05-03 06:33:32 [集合框架] List 接口
  9. Terry Zhang 发表 2014-05-13 06:05:01 [集合框架] SortedSet 接口
  10. 逍遥冲 发表 2013-12-30 14:13:10 [引]编译器自举和移植
  11. 糖果 发表 2015-08-03 20:25:16 逆向基础(十三) JAVA (三)
  12. 博主 发表 2013-03-12 14:17:00 Java基础学习之Enum

发表评论