Collections操作List集合升序、降序sort方法使用

2015-12-31 16:31 阅读 22,615 次 评论 2 条

摘要:我经常将Collection和Collections这两者混一起了,弄得有点不明白,今天特地查看了资料,理一理他们之间的区别,加深了Collection接口和Collections封装类的认识。

一、 Collections 是java.util包中提供的一个集合接口,我们用的最多的是它的直接接口List、Set,提供集合操作的实例方法和静态方法。Collections接口在Java 类库中有很多具体的实现。

Collection  
├List  
│├LinkedList  
│├ArrayList  
│└Vector  
│ └Stack  
└Set 
JavaSDK不提供直接继承自Collections接口,Java SDK提供的类都是继承自Collection的“子接口”,例如List、Set

001-Collections常用方法

二、Collections是java.util包中提供的一个封装类,类中包装了很多操作集合的静态方法,比如比较常用的:sort(List)、sort(List, Comparator) 、binarySearch(List>, T),该类不能实例化,它是一个工具类,可以直接调用里面的方法。

三、Collections写了一个小案例,操作集合List,并对集合进行升序、降序排序:

演示效果一:Collections.sort(List)方法的使用

》升序排序

002-升序排序(1)

点击排序按钮,完成排序操作

003-升序排序(1)

  1. protected void sortNums() {  
  2.     if (!isSort) {  
  3.         for (String str : listArray) {  
  4.   
  5.             list.add(str);  
  6.         }  
  7.         Collections.sort(list);//直接调用Collections静态sort()方法  
  8.         isSort = true;  
  9.     }  
  10.   
  11.     new Thread(new Runnable() {  
  12.   
  13.         @Override  
  14.         public void run() {  
  15.             Message msg = new Message();  
  16.             msg.what = 001;  
  17.             handler.sendMessage(msg);  
  18.   
  19.         }  
  20.   
  21.     }).start();  
  22. }  

sort(List)仅能够对集合中的元素进行升序排序,需要进行其他指定字段或降序排序,需要实现Comparator接口的sort(List,Comparator)方法。

演示效果二:sort(List, Comparator) 方法的使用

》降序排序

004-降序排序

  1. Collections.sort(mList, new Comparator<NewsBean>() {//调用sort()方法,并实现Comparator接口中的compare()方法  
  2.   
  3.             @Override  
  4.             public int compare(NewsBean lhs, NewsBean rhs) {  
  5.                 int value = Integer.valueOf(rhs.getId())  
  6.                         - Integer.valueOf(lhs.getId());  
  7.                 Log.e("降序排序---------------》""" + value);  
  8.                 return value;  
  9.             }  
  10.   
  11.         });  

改为如下,则为升序排序

  1. Collections.sort(mList, new Comparator<NewsBean>() {//调用sort()方法,并实现Comparator接口中的compare()方法  
  2.   
  3.             @Override  
  4.             public int compare(NewsBean lhs, NewsBean rhs) {  
  5.                 int value = Integer.valueOf(lhs.getId())  
  6.                                                 -Integer.valueOf(rhs.getId());  
  7.                 Log.e("升序排序---------------》""" + value);  
  8.                 return value;  
  9.             }  
  10.   
  11.         });  

005-升序排序

你可能感兴趣的文章

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/1185.html ,谢谢支持!

资源分享

分类:Java基础 标签:
Android开发之ProgressDialog读取文件进度解析 Android开发之ProgressDialog
三级缓存的含义和如何实战使用? 三级缓存的含义和如何实战使用?
Android代码绘制虚线、圆角、渐变和阴影效果图 Android代码绘制虚线、圆角、渐
浅谈SimpleCursorAdapter 浅谈SimpleCursorAdapter