关闭

List排序

85人阅读 评论(0) 收藏 举报

一个结果集List,里面有很多的对象,要求根据对象的成员进行排序。


方法1:

排序:

Java代码 

  1. Collections.sort(list, new Comparator<ComparableBean>() {  
  2.             public int compare(ComparableBean arg0, ComparableBean arg1) {  
  3.                 int hits0 = arg0.getHits();  
  4.                 int hits1 = arg1.getHits();  
  5.                 if (hits1 > hits0) {  
  6.                     return 1;  
  7.                 } else if (hits1 == hits0) {  
  8.                     return 0;  
  9.                 } else {  
  10.                     return -1;  
  11.                 }  
  12.             }  
  13.         }); 


----------------------------------------------------------------------------------------------------------------------------------------------------

方法2:

方法:
1. 对象实现Comparable接口,并从写compareTo()方法,方法里是排序规则。
2. 利用Arrays.sort(o)进行排序,注意不要用List.toArray();
3. 获得排序后的List。


对象:

Java代码 

  1. public class ComparableBean implements Comparable<ComparableBean> {  
  2.   
  3.     private int id;  
  4.   
  5.     private String name;  
  6.   
  7.     private Date birthday;  
  8.   
  9.     public Date getBirthday() {  
  10.         return birthday;  
  11.     }  
  12.   
  13.     public void setBirthday(Date birthday) {  
  14.         this.birthday = birthday;  
  15.     }  
  16.   
  17.     /* 
  18.      * 按照id从大到到小的顺序排序。 自己可以在方法里面编写任意的排序算法。 
  19.      */  
  20.     public int compareTo(ComparableBean o) {  
  21.         // 根据名字从小到大顺序:if(String.CASE_INSENSITIVE_ORDER.compare(getName(), o.getName()) > 0)  
  22.         // 根据生日从小到大顺序:if (this.birthday.compareTo(o.getBirthday()) > 0)   
  23.         // 根据ID从小到大顺序。  
  24.         if(this.getId() > o.getId()){  
  25.             return 1;  
  26.         }else {  
  27.             return -1;  
  28.         }  
  29.     }  
  30.   
  31.     public int getId() {  
  32.         return id;  
  33.     }  
  34.   
  35.     public void setId(int id) {  
  36.         this.id = id;  
  37.     }  
  38.   
  39.     public String getName() {  
  40.         return name;  
  41.     }  
  42.   
  43.     public void setName(String name) {  
  44.         this.name = name;  
  45.     }  
  46.   
  47.     @Override  
  48.     public String toString() {  
  49.         return getId() + " : " + getName() + " : " + getBirthday().toString();  
  50.     }  

排序和测试类:
Java代码  :
  1. import java.util.ArrayList;  
  2. import java.util.Arrays;  
  3. import java.util.Date;  
  4. import java.util.List;  
  5. import java.util.Random;  
  6.   
  7. public class TestComparable {  
  8.   
  9.     private TestComparable() {  
  10.         ComparableBean cbean;  
  11.         Random rand = new Random();  
  12.         List<ComparableBean> beans = new ArrayList<ComparableBean>();  
  13.         for (int i = 0; i < 100; i++) {  
  14.             cbean = new ComparableBean();  
  15.             cbean.setId(rand.nextInt(10000));  
  16.             cbean.setBirthday(new Date());  
  17.             cbean.setName("TestName" + rand.nextInt(1000));  
  18.             beans.add(cbean);  
  19.         }  
  20.           
  21.         Object[] beanObjects = beans.toArray();  
  22.         Arrays.sort(beanObjects);  
  23.   
  24.         beans.removeAll(beans);  
  25.         System.out.println(beans.size());  
  26.           
  27.         for (int i = 0; i < 100; i++) {  
  28.             System.out.println(beanObjects[i]);  
  29.         }  
  30.   
  31.         System.out.println("ok");  
  32.     }  
  33.   
  34.     public static void main(String[] args) {  
  35.         new TestComparable();  
  36.     }  
  37.   


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:223次
    • 积分:14
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章存档