对数组排序有很多方法,但是对集合排序一般都以自定义排序的为多,其实利用Collection的sort也是可以实现的。

一、 Collections.sort(list,comparator)

举个例子:
一个实体类User,这里用age属性大小来排序,return的结果>0是大于,<0就是小于。另外这里是降序,要升序就看将两个参数对调即可。

class RankComparator extends Comparator<User>{    @Override      public int compare(Model lhs, Model rhs) {           // TODO Auto-generated method stub           return rhs.getAge() - lhs.getAge();      } }

利用这种方法排序就十分简单明了。

二、自定义快排

快排作为一种基础的排序算法,还是应该掌握一下的。
这里再举一个例子,这里使用的降序,升序的话只要将timeK与 timeI和timeJ比较的大小与号反一下就好了:

public static void rankUser(List users, int low, int high) {        int i = low;        int k = low;        int j = high;        int timeK = users.get(k).getAge();        while (i < j) {            for (; j != i; j--) {                int timeJ = users.get(j).getAge();                if (timeK < timeJ) {                    // 右边有小于K的数就换位置                    User user = users.get(j);                    users.add(j, users.get(k));                    users.remove(j + 1);                    users.add(k, user);                    users.remove(k + 1);                    k = j;                    break;                }            }            for (; j != i; i++) {                int timeI = users.get(i).getAge();                if (timeK > timeI) {                    // 左边有大于K的数就换位置                    User user = users.get(i);                    users.add(i, users.get(k));                    users.remove(i + 1);                    users.add(k, user);                    users.remove(k + 1);                    k = i;                    break;                }            }        }        if (i > low) {            rankUser(users, low, i - 1);        }        if (j < high) {            rankUser(users, j + 1, high);        }    }

其实没有什么太大难度,只要理解快排的流程再加上递归就完事啦。

更多相关文章

  1. android list排序
  2. android 抽屉 效果
  3. (三)Kotlin 高阶函数
  4. Android(安卓)API:Activity.managedQuery()
  5. Android面试题算法篇
  6. Activity(启动模式) Activity(退出)
  7. Android中文联系人排序及检索补丁的原理(090819更新)
  8. Android(安卓)Java List 排序
  9. Android(安卓)GreenDao使用(二)增删改查

随机推荐

  1. 用翻译赚钱,翻译社规则调整
  2. Fedora写给Python的情书
  3. 值得关注的5个Python开源项目
  4. 2分钟理清计算机、Python和Pip的三角关系
  5. 用Python制作3D动画
  6. 如果你也用Win10,真的请备份!
  7. 不看教程,可能更浪费你的时间
  8. 在python中执行shell命令的6种方法
  9. 临摹源码 | 一比一手写Dubbo源码中的SPI(
  10. 最良心的Python安装说明