Java List排序
Java List排序
首先介绍常用的排序用法
Collections.sort(List list)//默认升序, 类需实现Comparable接口, 重写compareTo方法
Collections.sort(List list,Comparator<? super T> c)//传递一个比较器对象, 需重写compare方法
Comparable接口
整个Comparable.java文件只有一个方法compareTo

基本类型的封装类
基本类型的封装类(Integer String等)都已经实现了Comparable接口并重写了compareTo方法, 所以可以直接Collections.sort(List list);, 不用传递Comparator 了
如
Integer.java文件
自定义类
自定义类想实现比较的话, 也可以实现Comparable接口并重写了compareTo方法
Comparator 接口
Comparator 接口的方法比较多, 但我们只需关注compare方法

传递比较器, 重写compare方法

学会了这种方法新建list, 大概大括号里面就是对象内部了吧, 所以可以直接调方法
| 1 | ArrayList<Integer> list = new ArrayList<Integer>() {{ | 
自定义类
对于自定义类, 也可不用实现Comparable接口并重写了compareTo方法, 直接传递一个比较器, 重写compare也行
扩展–Java8新排序方法
基础类型 List 排序
| 1 | list.sort(Comparator.naturalOrder()); /* naturalOrder自然排序即:正序 */ | 
自定义类排序(list.sort()五种写法)
| 1 | ArrayList<TreeNode> listNodes = new ArrayList<TreeNode>() {{ | 
二次排序
| 1 | // 多条件排序第一个写法,先按Age排序,再根据Salary排序 | 
参考
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


