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.