一、实现方式
有时我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable接口,然后调用Collections.sort(List)方法进行排序,另一种方法是类不实现Comparable接口,而在排序时使用Collections.sort(List, Comparator)方法,并实现其中的Comparator接口。
二、用第二种方法配合Lambda 表达式快速生成排序方式
1 2 3
| public PriorityQueue(Comparator<? super E> comparator) { this(DEFAULT_INITIAL_CAPACITY, comparator); }
|
1 2
| PriorityQueue<Integer> queMin; queMin = new PriorityQueue<Integer>((a, b) -> (b - a));
|
三、关于Lambda表达式
语法
lambda 表达式的语法格式如下:
1 2 3
| (parameters) -> expression 或 (parameters) ->{ statements; }
|
以下是lambda表达式的重要特征:
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
Lambda 表达式实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| () -> 5
x -> 2 * x
(x, y) -> x – y
(int x, int y) -> x + y
(String s) -> System.out.print(s)
|
参考:https://www.cnblogs.com/sench/p/8889435.html
https://www.runoob.com/java/java8-lambda-expressions.html